Swift 4.0 中的錯誤處理及自定義拋出錯誤

在Swift的標準庫,很多方法名后都帶有'throws'這個關鍵詞, 'throws'表示該方法在執(zhí)行過程中遇到錯誤則拋出。

下面是Swift標準庫中的一個構造方法,String、Data都有該構造方法

public init(contentsOf url: URL) throws

當我們通過該方法去構造一個實例時怎么去捕獲拋出的錯誤呢(如果有錯誤)?

捕獲錯誤

在Swift中是通過 do{}catch{} 去捕獲錯誤, 如下


do {
    let data = try Data(contentsOf: URL(string:"path")!)
    print(data)
}
catch {
   print(error)
}

do{} 循環(huán)體中遇到錯誤即可中止,不會繼續(xù)執(zhí)行后面代碼

自定義錯誤

enum registerError: Error {
   case invalidAccount
   case invalidPassword
   case otherError(description: String)
}
    
func register(account: String, pwd: String) throws {
    guard account.characters.count>6 && account.characters.count<16 else {
            
        throw registerError.invalidAccount
    }
        
    guard pwd.characters.count>7 && pwd.characters.count<18 else {
            
         throw registerError.invalidAccount
    }
        
     // do something
}

這樣自定義錯誤和使用就完成了。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 本章將會介紹 自動引用計數(shù)的工作機制自動引用計數(shù)實踐類實例之間的循環(huán)強引用解決實例之間的循環(huán)強引用閉包引起的循環(huán)強...
    寒橋閱讀 1,033評論 0 0
  • 我剛大學畢業(yè)來到這家這公司,或許是剛出校園的,帶來一點新鮮氣沖淡辦公室的壓抑的氣氛。 同事之間表面是和我很好的,至...
    寧樸釋閱讀 274評論 2 1
  • 實話實說,阿布感覺「東方快車謀殺案」并沒有網(wǎng)上評價的那么好。 目前豆瓣上7.1的評分還是比較中肯的(個人意見)。 ...
    腹黑電影閱讀 774評論 1 6
  • 六點五十鬧鐘響了,困的要死,眼睛腫脹,脊背僵硬,全然沒有睡夠,按下鬧鐘,再睡一分鐘,還沒呼吸幾次,鬧鐘又...
    木漫日子閱讀 264評論 0 0

友情鏈接更多精彩內容