從零開始當工程師 -3 邏輯判斷類(2) – Try-Catch

前一章講到了一些基本運算子、If-Else 以及 Switch

這次我們來講下 Try – Catch

Try 嘗試,那什麼事情需要用到嘗試這個字呢?

當然就是有可能失敗的事情啊

舉生活中的例子來說,把 Try當成是在打棒球的投者跟打者,通常狀況來說應該都要擊出

但總有失敗的時候,而這時候Catch就是那位悲情的捕手,不然球就會到處亂跑…

Try Catch 示意圖(Try 打者、Catch捕手)

換言說,Try主要就是拿來包你覺得程式可能會出錯的地方,如果沒問題那很好

一旦出事了,那Catch就會救下你的程式

基本的Try- Catch如下

try
{
    巴拉巴拉,想做什麼
}
catch(Exception ex)
{
   上面出錯了,該怎麼辦(通常會將錯誤資訊存進Log或是印出來,也有可能用throw出錯誤)
}

Exception 例外

表示應用程式執行期間發生的錯誤,底下又包含了很多類型

像是常見的 (以C#為例,但各語言都應有類似的)

  • NullReferenceException – 對null進行了錯誤的處理
  • IndexOutOfRangeException – Array、List類超出其索引值引發的錯誤
  • TimeoutException – 運行時間過久的錯誤 (常見於串接資料庫、外部API上)

Throw 拋出

用來拋出Exception,有時候程式寫的層數較多,可能要拋回其他層處理會用到

有時候也可以用來手動拋出例外 ➔ 可自訂例外類型,不受原本編譯限制(有機會再來講解,稍微比較複雜一點點)

Finally

其實 Try-Catch 還有一個兄弟,他就是Finally

以上面的棒球範例來說,Finally 擔任的就是裁判的角色

Finally 示意圖(排判)

怎麼說呢,因為Finally 忠實還原了其英文的意思,Finally 為最終、最後的意思

故不管try-catch 發生了什麼事(球被打出或被捕手接走),最後都會執行到Finally,是不是很像裁判做出最後的宣判呢?

注意

以上的try-catch-finally三兄弟,都是不能單獨存在的

必須以以下幾種形式進行使用

  • try-catch (最常見)
  • try-catch-finally
  • try-finally

這次的內容就到這裡了,下一次的內容還沒想好,想到題目再來更新 (灬ºωº灬),我們下次見

這次的名言就來呼應一下嘗試(try)吧

“不登高山,不知天之高也;不臨深溪,不知地之厚也” 荀子·勸學

參考資料 : Microsoft 官方文件 – try-catchException

圖片來源 : Unsplash – woman in red jersey shirt and white shorts holding baseball bat (unsplash.com)

4 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *