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!

使用這種情況下是,保證不會出錯,所以我根本就不用去處理它可能會拋出的異常。但是一旦拋出異常就會出現(xiàn)崩潰

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

不關(guān)心是否出現(xiàn)異常,我只關(guān)心結(jié)果,出現(xiàn)異常就返回nil,否則返回可選的結(jié)果

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

結(jié)果是一個可選值,出現(xiàn)異常就是nil,否則就是Optional(值)??赡軙霈F(xiàn)Optional(Optional(值))這種情況

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容