Error Handing in swift3

2016-11-16  本文已影响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(值))这种情况

上一篇 下一篇

猜你喜欢

热点阅读