iOS Swift 異常處理

2021-09-22 17:25:45 字數 1300 閱讀 9533

1)如何建造異常型別:

2)如何丟擲異常:

3)如何獲取並處理異常:

4)不處理異常:

5)總結:

func checksomething() 

func dosomething()

print("checkpoint 3")

}// checkpoint 1, checkpoint 2, checkpoint 3, clean up here, checkpoint 4

checksomething()

上述示例可以看到,在列印出 「checkpoint 2」 之後並沒有列印出 「clean up here」,而是 「checkpoint 3」,這就是 defer 的作用,它對進行了 print("clean up here") 延遲。我們再來看乙個 i/o 的示例:

// 偽**

func writesomething()

file.write()

closefile(file)

}

上述示例是乙個 i/o 操作的偽**,如果獲取到的 iostatus 正常,那麼該方法沒有問題,如果 iostatus 取到的是 error,那麼會被 guard 語句抓到執行 return 操作,這樣的話 closefile(file) 就永遠都不會執行了,乙個嚴重的 bug 就這樣產生了。下面我們看看如何用 defer 來解決這個問題:

// 偽**

func writesomething()

let iostatus = fetchiostatus()

guard iostatus != "error" else

file.write()

}

我們將 closefile(file) 放在 defer **塊裡,這樣即使 iostatus 為 error,在執行 return 前會先執行 defer 裡的**,這樣就保證了不管發生什麼,最後都會將檔案關閉。

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

func myfunction() throws 

guard let item = item else

guard item.count > maxnumber else

// do something with item

// ...

}

struts 異常處理 全域性異常處理

記錄一下全域性異常處理的過程 處理主動丟擲的異常,轉向錯誤提示頁面。1 寫乙個自己的異常,繼承runtimeexception,從父類生成構造方法 package me.yndy.srtp.exception suppresswarnings serial public class errorexc...

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

01 異常 異常處理

注意 1 對定義的變數能初始化的盡量初始化,如果賦的值可能產生誤導,可以採用可空型別 例如 double?dnumres null 3 異常 執行的時候出現的錯誤,或bug 編寫 的預期條件玉實際條件不穩合 異常的機制是為了保證程式可以一直正常執行。丟擲異常 throw new exception ...