美文网首页
[swift 进阶]读书笔记-第八章:错误处理 C8P7 错误

[swift 进阶]读书笔记-第八章:错误处理 C8P7 错误

作者: liaoworkinn | 来源:发表于2019-03-30 21:12 被阅读0次

    第八章:错误处理 Error Handling

    8.7 错误和可选值 Error and Optionals

    本小节围绕 try? 的用法和相关知识点展开来讲,内容不多,比较简单。

    try? 关键字的作用: 可以忽略error抛出的错误, 并将返回值转化为可选值, error时返回nil, 成功时正常返回

    示意Demo如下

    /// parse方法是一个可以throw error的方法。
    if let result = try? parse(text: input)
    { 
        print(result)
    }
    

    使用场景:

    你对你的错误信息并不在意的时候可以使用try? (swift 并不建议你去忽略错误,不过有些场景去使用try?, 真香~)

    使用try? 意味着你能获得的错误信息少了,我们可以写一个optional的extension来补充获得想要的报错信息

    Demo如下,只做了解即可。

    extension Optional {
    /// Unwraps `self` if it is non-`nil`.
    /// Throws the given error if `self` is `nil`. 
        func or(error: Error) throws -> Wrapped {
            switch self {
                case let x?: return x   
                case nil: throw error
            } 
        }
    }
    
    do {
        let int = try Int("42").or(error: ReadIntError.couldNotRead)
    } catch { 
        print(error)
    }
    

    书中并没有讲try! try? try 的区别,这里我补充补充:

    try!: "我写的代码肯定没有问题,如果有,你尽管崩溃 " 这个肯定不建议使用啊.
    我也一直觉得我写的代码不可能有问题的,可是该崩的时候还是崩。。

    try?: 上面已讲,略略略。。

    try: 常规的异常处理 配合 do catch 一起使用。

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

    相关文章

      网友评论

          本文标题:[swift 进阶]读书笔记-第八章:错误处理 C8P7 错误

          本文链接:https://www.haomeiwen.com/subject/jazsbqtx.html