Swift 錯誤處理
-
在 Swift 中使用遵守 Error 協定的類型來表示錯誤,這是一個來自系統的空協定,凡是遵守該協定的類型都可以用于錯誤處理 Swift
中枚舉類型最适合建構一組相關的錯誤狀态
enum FailError : Error {
case ErrorOne
case ErrorTwo
case ErrorThree
case ErrorFour
}
用 throwing 函數傳遞錯誤
- 抛出錯誤使用關鍵字 throw
- 可能會抛出錯誤的函數和方法必須在定義時聲明,方法是在傳回箭頭->前添加 throws 關鍵字,一個标有 throws 關鍵字的函數被稱為 throwing 函數
func TestError(_ num : Int) throws -> String {
switch num {
case 1:
throw FailError.ErrorOne
case 2:
throw FailError.ErrorTwo
case 3:
throw FailError.ErrorThree
case 4:
throw FailError.ErrorFour
default:
return "成功"
}
}
使用do-catch 處理錯誤
-
可以使用一個 do-catch 語句運作一段閉包代碼來處理錯誤,如果在 do 子句中代碼抛出異常,這個錯誤會在 catch 子句中比對
進而決定哪條子句能夠處理它
do {
try TestError(4)
} catch FailError.ErrorOne {
print("ErrorOne")
} catch FailError.ErrorTwo {
print("ErrorTwo")
} catch FailError.ErrorThree {
print("ErrorThree")
} catch FailError.ErrorFour {
print("ErrorFour")
}
将錯誤轉化為可選值
- 可以使用 try? 将錯誤轉換成一個可選值來處理錯誤。如果 try?表達式執行時一個錯誤被抛出,那麼表達式的值為 nil
try? TestError(4)
print(try? TestError(5))
if let val = try? TestError(4) {
print("---成功")
} else{
print("---失敗")
}
禁用錯誤傳遞
- 雖然在程式中使用了 throw 關鍵字,但是我們可以確定不會抛出任何異常,這是我們就可以表達式前添加 try! 用來強制禁止錯誤傳遞
try! TestError(5)
print(try! TestError(5))