Swift 異常處理

2021-07-24 03:34:16 字數 2485 閱讀 9062

在 ios 開發當中,我們會面對很多異常處理。在 cocoa touch 中我們使用nserror來進行異常處理。在新的 swift 2.0 中,我們可以使用新的errortypeprotocol。

在 swift 中,enum是最好的方法建立屬於你自己的異常型別,你只要在你的enum中確認新的errortype

enum

myerror: errortype

在丟擲異常之前,我們需要在函式或方法的返回箭頭->前使用throws來標明將會丟擲異常

func

mymethodretrunstring

() throws -> string

// no return, we can just add throws in the end

func

mymethodretrunnothing

() throws

宣告之後, 我們需要在函式或者方法裡扔出異常,很簡單使用throw就可以了

func

mymethod

() throws

//...

// item is an optional value

guard let item = item else

// do with item

}

上面這段**使用了guard來進行unwrap optional value。這是 swift 2.0 提供的乙個新的方法。

guard

在 haskell, erlang 等語言中早已存在guard

guard翻譯過來可以理解為守護,守衛。

在 swift 中,guard有點像if但是他們有兩個非常重要的區別

guard中的else只能執行轉換語句,像return,break,continue或者throws當然你也可以在這裡返後乙個函式或者方法。

值得注意的是,guard的使用會提高你**的可讀性,但是也代表你的**的執行會有非常明確的順序性,這一點需要開發者們留心處理。

雖然我們在異常處理中提到了guard但是不代表它只能在異常處理中使用。它具有廣泛的適用性,或許過陣子我會專門為guard的使用寫篇文章。

上文講述了如何建造丟擲異常,獲取和處理異常就變得很簡單了。使用do-catch機制。

do  catch

do-catch機制簡單易懂。很多程式語言也使用類似的機制進行異常處理,但是在 swift 中有乙個比較重要的特性。

do  catch myerror.notexist  catch myerror.outofrange
這裡值得提一下在 swift 2.0中乙個跟異常處理沒有關係的改進

swift 2.0 中沒有了do-while迴圈,取而代之的是repeat-while。蘋果說這個改動是為了增強**的可讀性。但是我更覺得是為了讓我們更舒服的使用do-catch

如果我不想處理異常怎麼辦,或者說,我非常確定某個方法或者函式雖然宣告會丟擲異常,但是我自己知道我在使用時候是絕對不會丟擲任何異常的。這種情況下 我們可以使用try!

try! functionthrowerrornil()
當然,如果你使用try!,而你的方法或者函式丟擲了異常,那麼你會得到乙個執行中異常 (runtime error) 所以我們開發者需要慎用哦。

文章結束前我們再討論下defer

在你的**塊就要結束前。如果你使用了defer。 在其之中的**就會執行。等於說,給了你最後的機會來進行一些處理。如果你熟悉 bdd 或者 tdd, 那麼你可以參考他們中的aferall機制

func

myfunction

() throws

guard let item = item else

guard item.count > maxnumber else

// do something with item

// ...

}

Swift 異常處理

open class func jsonobject with data data,options opt jsonserialization.readingoptions throws any所謂異常,便就是平常說的錯誤而已,swift引入異常機制,就是為了防止我們在程式設計中忽略一些導致崩潰的錯...

swift丟擲異常 Swift 2 0 異常處理

wwdc 2015 宣布了新的 swift 2.0.這次重大更新給 swift 提供了新的異常處理方法。這篇文章會主要圍繞這個方面進行討論。如何建造異常型別?在 ios 開發當中,我們會面對很多異常處理。在 cocoa touch 中我們使用 nserror 來進行異常處理。在新的 swift 2....

swift2 0異常處理

異常處理,英文名為exceptional handling,是代替日漸衰落的error code方法的新法,提供error code 所未能具體的優勢。異常處理分離了接收和處理錯誤 這個功能理清了程式設計者的思緒,也幫助 增強了可讀性,方便了維護者的閱讀和理解。異常處理 又稱為錯誤處理 功能提供了處...