美文网首页
Error Handing in swift3

Error Handing in swift3

作者: 离子来了 | 来源:发表于2016-11-16 15:09 被阅读24次

错误处理机制,在swift中的异常,必须在Controller级别给处理掉,不能再次往上抛出。

//定义异常
enum ShopError:Error{
    case goodNotFound//商品没有此货物
}
//抛出异常
func buy(good:String)throws -> String?{
    if good == "APPLE" {
        throw ShopError.goodNotFound
    }
    return "BANANA"
}
//再次往上抛出异常
func dodo(foo:String)throws -> String?{
    let e = try buy(good: foo)
    return e
}

Handing Error

  1. try

a. 可用于异常,往上层抛出
b. 处理异常

do {
    let result =  try dodo(foo: "APPLE")
}catch ShopError.goodNotFound{
    print("商店没有此货物")
}catch{
    print("其他异常")
}
  1. try!

使用这种情况下是,保证不会出错,所以我根本就不用去处理它可能会抛出的异常。但是一旦抛出异常就会出现崩溃

let result =  try! dodo(foo: "APPLE")
  1. try?

不关心是否出现异常,我只关心结果,出现异常就返回nil,否则返回可选的结果

let result =  try? dodo(foo: "APPLE")

结果是一个可选值,出现异常就是nil,否则就是Optional(值)。可能会出现Optional(Optional(值))这种情况

相关文章

  • Error Handing in swift3

    错误处理机制,在swift中的异常,必须在Controller级别给处理掉,不能再次往上抛出。 Handing E...

  • Error Handing

    使用枚举来定义多种error情况,遵循Error协议,并使用throw抛出对应错误情况//Representing...

  • Swift - Error Handing

    响应错误以及从错误中恢复的过程 抛出、捕获、传递、操作可回复错误 表示与抛出错误 Swift 中,错误用遵循 Er...

  • RxSwift #06 | Error handing

    Managing errors 在应用程序中比较常见的 error 有: No Internet connecti...

  • 13B 异常处理

    //error_handing/*try{if(有异常情况)throw 数据;}监视数据是否被抛出catch (类...

  • Swift5 - note1

    Swift 2 Error handing 增强 guard语法 协议支持扩展 Swift 3 新的GCD和Cor...

  • Rust中的错误处理机制

    [TOC] Rust中的错误处理机制 在大多数现代语言中,都拥有一套完善的错误处理机制(error handing...

  • Adhere to

    Handing in there every day.

  • Handing asynchronous results

    Handing asynchronous results Make controllers asynchronou...

  • Teaching in Thailand

    The first picture depicts a group of us handing out prize...

网友评论

      本文标题:Error Handing in swift3

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