第八章:错误处理 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
一起使用。
网友评论