美文网首页
Swift---18.错误处理

Swift---18.错误处理

作者: 阿丶伦 | 来源:发表于2017-03-06 15:24 被阅读16次
    • 错误的表示和抛出

      • 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")

    相关文章

      网友评论

          本文标题:Swift---18.错误处理

          本文链接:https://www.haomeiwen.com/subject/dwkugttx.html