《從零開始學Swift》學習筆記(Day54)——丟擲錯誤
原創文章,歡迎轉載。轉載請註明:關東昇的部落格
能放到try後面呼叫函式或方法都是有要求的,他們是有可能丟擲錯誤,在這些函式或方法宣告的引數後面要加上throws關鍵字,表示這個函式或方法可以丟擲錯誤。
宣告丟擲錯誤方法示例程式碼如下:
//刪除Note記錄方法
func remove(model: Note) throws {
...
}
//查詢所有記錄資料方法
func findAll() throws -> [Note] {
...
}
上述程式碼remove(_:)方法沒有返回值,throws關鍵字放到引數後面。findAll()有返回值throws關鍵字放到引數和返回值型別之間。
在函式或方法中丟擲錯誤
一個函式或方法能夠宣告丟擲錯誤,是因為在函式或方法中產生並丟擲了錯誤,這樣函式或方法宣告丟擲錯誤才有實際的意義。
在產生並丟擲錯誤方式:
在函式或方法中通過throw語句,人為地丟擲錯誤。
在函式或方法中呼叫的其他可以丟擲錯誤函式或方法,但是沒有捕獲處理,會導致錯誤被傳播出來。
示例程式碼如下://刪除Note方法 func remove(model: Note) throws { guard let date = model.date else { //判斷丟擲時候是有了guard語句 //丟擲"主鍵為空"錯誤 throw DAOError.PrimaryKeyNull } //比較日期主鍵是否相等 for (index, note) in listData.enumerate() where note.date == date { listData.removeAtIndex(index) } } //查詢所有資料方法 func findAll() throws -> [Note] { guard listData.count > 0 else { //判斷丟擲時候是有了guard語句 //丟擲"沒有資料"錯誤。 throw DAOError.NoData } return listData } func printNotes() throws { //宣告丟擲錯誤 let datas = try findAll() for note in datas { print("date : \(note.date!) - content: \(note.content!)") } }
try printNotes()
guard語句最擅長處理這種早期判斷,條件為false情況下丟擲錯誤。
findAll()語句本身有可能產生錯誤,但是並沒有使用catch語句捕獲並處理,這樣就導致了這個錯誤傳播給該 函式或方法的呼叫者,如果它的呼叫者也都不捕獲處理,那麼最後程式會出現執行期錯誤。
歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php
相關文章
- 《從零開始學Swift》學習筆記(Day 52)——Cocoa錯誤處理模式Swift筆記模式
- 《從零開始學Swift》學習筆記(Day 53)——do-try-catch錯誤處理模式Swift筆記模式
- 《從零開始學Swift》學習筆記(Day 24)——列舉Swift筆記
- 《從零開始學Swift》學習筆記(Day 16)——字典集合Swift筆記
- 《從零開始學Swift》學習筆記(Day 17)——Swift中陣列集合Swift筆記陣列
- 《從零開始學Swift》學習筆記(Day 59)——程式碼排版Swift筆記
- 《從零開始學Swift》學習筆記(Day 45)——重寫方法Swift筆記
- 《從零開始學Swift》學習筆記(Day 36)——靜態方法Swift筆記
- 《從零開始學Swift》學習筆記(Day 49)——擴充套件宣告Swift筆記套件
- 《從零開始學Swift》學習筆記(Day 44)——重寫屬性Swift筆記
- 《從零開始學Swift》學習筆記(Day 46)——下標重寫Swift筆記
- 《從零開始學Swift》學習筆記(Day 40)——解構函式Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 41)——類的繼承Swift筆記繼承
- 《從零開始學Swift》學習筆記(Day 29)——訪問級別Swift筆記
- 《從零開始學Swift》學習筆記(Day 32)——計算屬性Swift筆記
- 《從零開始學Swift》學習筆記(Day 33)——屬性觀察者Swift筆記
- 《從零開始學Swift》學習筆記(Day 23)——尾隨閉包Swift筆記
- 《從零開始學Swift》學習筆記(Day 27)——可選型別Swift筆記型別
- 《從零開始學Swift》學習筆記(Day 10)——運算子是“ +、-、*、/ ”嗎?Swift筆記
- 《從零開始學Swift》學習筆記(Day 47)——final關鍵字Swift筆記
- 《從零開始學Swift》學習筆記(Day 35)——會使用下標嗎?Swift筆記
- 《從零開始學Swift》學習筆記(Day 22)——閉包那些事兒!Swift筆記
- 《從零開始學Swift》學習筆記(Day 21)——函式返回值Swift筆記函式
- 30天從零開始學習SwiftSwift
- 《從零開始學Swift》學習筆記(Day 9)——離開表示式你試試!Swift筆記
- 《從零開始學Swift》學習筆記(Day 55)——使用try?和try!區別Swift筆記
- 《從零開始學Swift》學習筆記(Day 37)——預設建構函式Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 39)——建構函式過載Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 8)——小小常量、變數大作用Swift筆記變數
- 《從零開始學Swift》學習筆記(Day 12)——說幾個特殊運算子Swift筆記
- 《從零開始學Swift》學習筆記(Day 18)——有幾個分支語句?Swift筆記
- 《從零開始學Swift》學習筆記(Day 19)——函式引數傳遞Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 56)—— Swift編碼規範之命名規範Swift筆記
- 《從零開始學Swift》學習筆記(Day 1)——我的第一行Swift程式碼Swift筆記
- 《從零開始學Swift》學習筆記(Day 3)——Swift 2.0之後增加的關鍵字Swift筆記
- 《從零開始學Swift》學習筆記(Day 51)——擴充套件建構函式Swift筆記套件函式
- 《從零開始學Swift》學習筆記(Day43)——建構函式繼承Swift筆記函式繼承
- 《從零開始學Swift》學習筆記(Day 25)——類和結構體定義Swift筆記結構體