swift2 0異常處理

2021-07-09 15:18:35 字數 3360 閱讀 2196

異常處理,英文名為exceptional handling, 是代替日漸衰落的error code方法的新法,提供error code 所未能具體的優勢。異常處理分離了接收和處理錯誤**。這個功能理清了程式設計者的思緒,也幫助**增強了可讀性,方便了維護者的閱讀和理解。 異常處理(又稱為錯誤處理)功能提供了處理程式執行時出現的任何意外或異常情況的方法。異常處理使用 try、catch 和 finally 關鍵字來嘗試可能未成功的操作,處理失敗,以及在事後清理資源。

異常處理,是程式語言或計算機硬體裡的一種機制,用於處理軟體或資訊系統中出現的異常狀況(即超出程式正常執行流程的某些特殊條件)。

它有功能強大的控制流語句,像`do`、`try`、`catch`、`guard`和`defer`。我們能夠使用這些關鍵字去操控我們的**,更精確地執行我們的**。

關聯,在objective-c中,異常處理一般都是使用nserror類接收異常和丟擲異常,使用方法像這樣

1

2

3

4

5

6

7

nserror *error = nil;

nsstring *string = [[nsstring alloc] initwithcontentsoffile:@"filepath"encoding:nsutf8stringencoding error:&error];

if(error != nil)

// code...

不得不說,swift的異常處理更為優雅,下面會重點介紹。

demo

構建異常型別

我們可以構建自己的異常型別,它只是乙個列舉,遵循errortype,像是這樣

1

2

3

4

5

6

enum myerrorhandling: errortype

定義函式可丟擲異常

這裡值得一提的是,只有函式才能夠丟擲異常。我們需要在引數後和返回值前加上throws關鍵字,並用guard捕捉異常,用throw丟擲異常。

1

2

3

4

5

6

func myload(item: string?) throws -> string

returnnewitem

}

guard: guard必須與else配合使用,只有當guard審查的條件成立,guard之後的**才會執行,否則丟擲異常。

捕獲/處理異常

我們使用do-try-catch去獲取並處理異常

1

2

3

4

5

docatch

如果只包含乙個catch語句,那麼所有的錯誤都會在這個catch中執行,我們能夠捕抓其錯誤資訊

1

2

3

4

5

docatchlet error as nserror

我們在使用catch時,它是能夠進行模式匹配的,我們能夠進行更精準的錯誤匹配處理

1

2

3

4

5

6

7

docatchmyerrorhandling.error1catchmyerrorhandling.error2

如果我們不需要捕抓錯誤,那麼我們可以使用try!或try?去執行該函式

1

try? myload(nil)

不建議使用try!,使用try?會更加安全。因為如果當有錯誤捕抓到時,程式會直接崩潰

defer(延遲執行)

那麼我們何時需要使用到defer?這裡使用官方的例子,比如我們需要讀取某檔案內容並處理,你需要開啟這個檔案,最後你需要關閉這個檔案。當一切順利的時候,程式一直往下執行,檔案也將會被關閉。那麼當中間出現一些錯誤呢?例如在某個環節執行失敗了,但是你依然是需要去關閉該檔案,在此defer就表現得很強大了。在這個例子中,我們可以把關閉檔案的**放到defer裡面,在defer裡的**無論是函式執行成功或失敗都會被執行。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

func myload(item: string?) throws -> string

defer

guard let newitem = itemelse

returnnewitem

}

需要注意的是,defer語句可以有多個,它們的執行順序是handle 1 -> handle 2。不難理解,它們的執行順序是先進後出的。

宣告

博文出處:

Swift2 0異常處理

在丟擲異常之前,我們需要在函式或方法的返回箭頭 前使用 throws 來標明將會丟擲異常 func mymethodretrunstring throws string func mymethodretrunnothing throws func mymethod throws do catch m...

Swift 2 0 異常處理

如何建造異常型別?在 ios 開發當中,我們會面對很多異常處理。在 cocoa touch 中我們使用 nserror 來進行異常處理。在新的 swift 2.0 中,我們可以使用新的 errortype protocol。在 swift 中,enum 是最好的方法建立屬於你自己的異常型別,你只要在...

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

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