[swift 进阶]读书笔记-第八章:错误处理 C8P2 错误和函数参数

第八章:错误处理

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
}
注:无论你有多少个自定义的catch分支 最后都要用一个catch { }去结尾,我们认为你无法将所有的error都考虑到。

文章源文件地址,大家如果有更好的想法和观点欢迎交流

你可能感兴趣的:([swift 进阶]读书笔记-第八章:错误处理 C8P2 错误和函数参数)