第八章:错误处理
8.2 抛出和捕获
本小节主要讲了概念do catch
throws
相关的东西
先想想我们在上一节讲了Result类型
知识点1: swift不会返回一个Result
来表示失败,而是用throws
Result作用于类型
, throws作用于函数
知识点2:编译器会认为throws是一个普通的返回
,不会像很多语言一样带来运行时的开销。相对效率高一些
。
我们通过 do catch 去处理一个函数的throws 可以使用catch的匹配模式去捕获具体的错误 或者在catch-all中去捕获其他异常 如下
do{
}catch FileError.fileNotExist {
//文件不存在的error
}catch{
//其他error
}
自己自定义一个指定的error的用法。
我们可以通过创建自定义Error枚举去捕获对于的错误类型
///创建error的枚举
enum MyCustomErrorType: Error {
case ErrorReason
case ErrorReason
case ErrorReason
}
///对应的error抛出
func myThrowFunc() throws {
if 这里error了 {
throw MyCustomErrorType.ErrorReason
}
}
///接收对应的error
do{
myThrowFunc()
}catch MyCustomErrorType.ErrorReason {
//指定的error
}catch{
//其他error
}