搜索
您的当前位置:首页正文

Swift---18.错误处理

来源:二三娱乐
  • 错误的表示和抛出

    • Error协议

在Swift中,用符合Error协的类型值来表达错误,用throw来抛出这个错误,
当使用throw抛出错误后,在你处理完成之前,进程会中断,所有下面的语句都不会执行
enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock } var error = VendingMachineError.insufficientFunds(coinsNeeded: 5) print(error) throw error print("永远不会执行")
- #####用函数传递错误:
Swift中,在方法返回值的->符号前添加throws关键字,表明某个方法可以抛出错误.当我们调用该类型方法时,必须使用do-catch,或者try,/try!来处理错误,或者将其传递给下一个方法,
- ######"do-catch":
使用do抛出一条错误,这个错误将会与catch中的字句逐一匹配.
- ######"try?":
将错误转换成可选值,当抛出错误时,try?会返回nil,若无错误抛出时,会返回方法对应的返回值
- ######"try!":
禁用错误传递,只有明确不会抛出错误时,才使用try!,否则当抛出错误,程序会报错
- ######"defer":
延迟处理,被defer包裹的闭包代码,将会在当前代码块执行完成后进行,注意,不能在其内包含任何控制转移语句,也不能抛出错误
enum StringIsEmpty:Error { case stringIsEmpty } func throwsError(str:String) throws -> String { guard !str.isEmpty else { defer { print("已经解决") } print("抛出错误") throw StringIsEmpty.stringIsEmpty } return str+" is not empty" } let error:String? do { try throwsError(str: "") } catch StringIsEmpty.stringIsEmpty { print("is empty") } let str = try? throwsError(str: "asd") let str1 = try! throwsError(str: "asd")

Top