错误处理
swift提供在运行时抛出,捕获,传送和控制可回收错误
错误的表示
在Swift中,错误ErrorType
协议的值表示。枚举可以把一系列的错误组合到一起,也可以把相关的值关联到一起
错误抛出 通过在函数或者方法的声明的参数后面加上 throws
关键字
func canThrowErrors() throws -> String
func cannotThrowErrors() -> String
在抛出函数体的任意一处,可以通过 throw
语句抛出错误。
在调用一个抛出函数的时候,在调用前加上try
这个关键词表明函数可以抛出错误,而且在try
后面代码将不会执行。
捕捉和处理错误
使用do-catch
语句来捕获和处理错误
do{
try function
}catch pattern{
}
注意:Swift中的错误处理和其他语言中的异常处理很像,但是和其他语言不同,Swift不会展开调用堆栈,那会带来很大的性能损耗。,在Swift中throw语句的性能可以做到几乎和return语句一样。
禁止错误的传播
有几种情况是不会抛出错误的,但是可以通过forced-try
表达式来调用抛出函数或方法,即使用try!
来代替try
。 try!
来调用抛出函数或者方法禁止了错误传送。
收尾操作
使用defer
语句可以在执行一系列的语句后,不管有没有错误发生,都可以执行一些必要的收尾操作。defer
把执行推迟到退出当前域的时候。