《從零開始學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
相關文章
- python Scrapy 從零開始學習筆記(一)Python筆記
- python Scrapy 從零開始學習筆記(二)Python筆記
- PHP從零開始系列二(學習筆記):序言PHP筆記
- PHP從零開始系列一(學習筆記):前言PHP筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(三)筆記
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- 從零開始學習機器學習機器學習
- 從零開始學習laravelLaravel
- 從零開始學習KafkaKafka
- 從零開始機器學習機器學習
- 從零開始學五筆(一):概述
- Promise基礎(消化錯誤和丟擲錯誤)Promise
- 《Python深度學習從零開始學》簡介Python深度學習
- 從零開始機器學習-03機器學習
- 從零開始機器學習--4機器學習
- 從零開始機器學習--05機器學習
- 從零開始學習 Go ——安裝Go
- 從零開始學習C++(0)C++
- swift學習筆記《1》Swift筆記
- swift學習筆記《4》Swift筆記
- 從零開始的Unity個人學習日記(二)Unity
- 從零開始學機器學習——瞭解聚類機器學習聚類
- 從零開始學機器學習——入門NLP機器學習
- 《谷歌JAX深度學習從零開始學》簡介谷歌深度學習
- 從零開始學PythonPython
- swift學習筆記《2》-swift語法Swift筆記
- 從零開始學習邏輯迴歸邏輯迴歸
- 從零開始學習如何部署程式碼
- 從零開始內網滲透學習內網
- 從零開始學習 React 高階元件React元件
- 從錯誤中學習
- swift學習筆記《3》-技巧Swift筆記
- Swift進階學習筆記Swift筆記