Error Handing in swift3

错误处理机制,在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(值))这种情况

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容