Swift 中 throws 异常抛出

前端之家收集整理的这篇文章主要介绍了Swift 中 throws 异常抛出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一.异常抛出关键 throws 定义在函数结尾 如果函数有返回值 定义在 返回类型前如 :

func throwDeliver(num:Int) throws ->String


二.定义方法

//错误传递
@discardableResult
func throwDeliver(num:Int) throws ->String {
print("错误传递")
try numberTest(num: num)
print("未传递错误")
return "无错误"
}
func numberTest(num:Int) throws{
if num == 1 {
print("成功")
}else if num == 2 {
throw OperationError.ErrorTwo
}else if num == 3{
throw OperationError.ErrorThree("失败")
}else {
throw OperationError.ErrorOther
}

}


三、使用

1. 禁止异常传递,只有当你确定这个语句不会抛出异常你才可以这么做否则会引发运行时错误

print(try? throwDeliver(num: 1)+":禁止错误传递")

错误传递
成功
未传递错误
Optional("无错误:禁止错误传递")

print(try? throwDeliver(num: 5)+":禁止错误传递")

错误传递
nil

在执行到

print("错误传递")

try numberTest(num: num) 抛出异常 后续代码不在走下去

2.将异常转换成可选值,如果一个语句会抛出异常那么它将返回nil无论这个语句本来的返回值是什么:

if let retureMessage = try? throwDeliver(num: 1) {
print("可选值非空:"+retureMessage)

}


错误传递
成功
未传递错误
可选值非空:无错误 

if let retureMessage = try? throwDeliver(num: 5) {
print("可选值非空:"+retureMessage)

}


错误传递 


3.使用do-catch捕获处理异常,在do闭包里面执行会抛出异常的代码,在catch 分支里面匹配异常处理异常

do {
print("do-catch 错误捕获")
try throwDeliver(num: 1)
print("未捕获错误")
} catch OperationError.ErrorOne {
print("ErrorOne:")
} catch OperationError.ErrorTwo {
print("ErrorTwo:")
} catch OperationError.ErrorThree(let discription) {
print("ErrorThree:"+discription)
}catch let discription{
print(discription)
}


do-catch 错误捕获
错误传递
成功
未传递错误
未捕获错误

do {
print("do-catch 错误捕获")
try throwDeliver(num: 5)
print("未捕获错误")
} catch OperationError.ErrorOne {
print("ErrorOne:")
} catch OperationError.ErrorTwo {
print("ErrorTwo:")
} catch OperationError.ErrorThree(let discription) {
print("ErrorThree:"+discription)
}catch let discription{
print(discription)

}


do-catch 错误捕获
错误传递
ErrorOther


也可以在 catch 后不加 条件选择 直接输出 系统抛出的错误信息

do {
try throwDeliver(num: 3)
print("未捕获错误")
} catch
{
print(error)

}


错误传递
ErrorOther

猜你在找的Swift相关文章