在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
}
這樣自定義錯誤和使用就完成了。