18 錯誤處理

2022-11-24 20:06:54 字數 1636 閱讀 1741

錯誤處理(

error handling)是響應錯誤以及從錯誤中恢復的過程。swift 提供了在執行時對可恢復錯誤的丟擲、捕獲、傳遞和操作的一流支援。

某些操作無法保證總是執行完所有**或總是生成有用的結果。可選型別可用來表示值缺失,但是當某個操作失敗時,最好能得知失敗的原因,從而可以作出相應的應對。

/*

* 服務端請求結果

- requestdataresultsuccess: 請求成功

- requestdataresulttimeout: 超時

- requestdataresultnonet: 無網路

- requestdataresultother: 其他 */

enum

requestdataresult: errortype

throw requestdataresult.requestdataresultsuccess;

enum

requestdataresult: errortype

class

datarequesthelper

guard name == "

lgf"

else

guard name == "

leegof

"else

return

"this is jim";

}func test() throws

}//2.用 do-catch 處理錯誤

//如果在do子句中的**丟擲了一個錯誤,這個錯誤會與catch子句做匹配,從而決定哪條子句能處理它。

var datarequesthelper =datarequesthelper();

docatch

requestdataresult.requestdataresultother

catch

requestdataresult.requestdataresulttimeout

catch

requestdataresult.requestdataresultnonet

//3.將錯誤轉換成可選值

//可以使用try?通過將錯誤轉換成一個可選值來處理錯誤。如果在評估try?表示式時一個錯誤被丟擲,那麼表示式的值就是nil。

var result = try? datarequesthelper.getdatafromserver("

lgf"

);//

4.禁用錯誤傳遞

//如果確認 throwing 函式實際上在執行時是不會丟擲錯誤的,可以在表示式前面寫try!來禁用錯誤傳遞,這會把呼叫包裝在一個不會有錯誤丟擲的執行時斷言中。如果真的丟擲了錯誤,將會得到一個執行時錯誤。

//var result2 = try! datarequesthelper.getdatafromserver("hi");

//執行時錯誤

//

todo:偽**示例

func processfile(filename: string) throws

while let line = try

file.readline()

//close(file) 會在這裡被呼叫,即作用域的最後。

}}