天天看點

Swift 4.0 中的錯誤處理及抛出錯誤

在Swift的标準庫,很多方法名後都帶有’throws’這個關鍵詞, ‘throws’表示該方法在執行過程中遇到錯誤則抛出,但不會crash。

下面是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{} 遇到錯誤即可中止,不會繼續執行後面代碼

自定義錯誤

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
    }
           

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

更多更詳細教程請通路個人站點: 碼出一個長城