第八章:錯誤處理 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
一起使用。