在Swift里,抛出的异常必须继承Error这个协议。那么这个协议是什么呢?

按住command再点击Error我们可以看到,

public protocol Error {

}

extension Error {

}

显然这个协议是空的,之所以还会有个空扩展,就是官方为了强调这个协议的确是空的,

只是为了标记错误的。

然后下面是我自己的例子,非常简单

enum numTest:
Int,
Error  {

case _0, _1, _2, _3

case nothing = 999

}

func errorTest(by num:
Int) throws
-> String {

switch num {

case 0:

throw
numTest._0

case 1:

throw
numTest._1

case 2:

throw
numTest._2

case 3:

throw
numTest._3

case 10:

throw
numTest.nothing

default:

return "OK"
+ "
\(num)"

}

}

for i in
0...10 {

do {

try
print(errorTest(by:
i))

}catch numTest._0
{

print("wrong
0")

}catch numTest._1
{

print("wrong
1")

}catch numTest._2
{

print("wrong
2")

}catch numTest._3
{

print("wrong
3")

}catch {

print("unknow")

}

}

最后运行结果

wrong 0

wrong 1

wrong 2

wrong 3

OK 4

OK 5

OK 6

OK 7

OK 8

OK 9

unknow

最新文章

  1. JS框架
  2. [No000089]String的(补空位)左对齐,(补空位)右对齐
  3. 如何配置Eclipse+Tomcat 开发环境【转】
  4. 用frame实现最基本的上中下三层布局,中间又分左右两部分.
  5. Android 自定义Spinner和其下拉窗口
  6. 批量将文件转换为UTF-8无BOM格式
  7. ASP.Net动态创建GridView
  8. (转)C#与C++之间类型的对应
  9. DBUS基础知识
  10. 【prufer编码+组合数学】BZOJ1005 [HNOI2008]明明的烦恼
  11. .net 操作excel
  12. Oracle 12c client with .NET legacy Oracle driver
  13. [BZOJ 2705] [SDOI 2012] Longge的问题
  14. Confluence 6 用户目录图例 - 使用 LDAP 授权,在用户第一次登陆时拷贝用户
  15. html网页如何使用哪种浏览器内核渲染的选择
  16. idea tomcat上传图片,无法显示的问题解决
  17. ES6 class的继承-学习笔记
  18. html5的拖拽dragAPI(如果看了API不懂,看看那三个案例就会恍然大悟)
  19. Django---简单接受表单信息
  20. selenium(三)浏览器操作

热门文章

  1. pppoe server 搭建
  2. HashSet、LinkHashSet、TreeSet总结
  3. mongoDB之监控工具mongotop
  4. (转)MongoDB在mongo控制台下的基本使用命令
  5. WPF popup控件的使用
  6. 【BZOJ2216】[Poi2011]Lightning Conductor 决策单调性
  7. mybatis学习总结(一)——简介
  8. flume-ng script should first try finding java from PATH and then try using bigtop, instead of vice-versa
  9. 什么是aop?-------转
  10. Mongoose学习(3)--设置环境变量