美文网首页
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

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