C#例外處理 (C# 教學) – 本篇會介紹C# try/catch 的例外處理介紹及使用方法 – Let’s go!
語法 | |
Try [ tryStatements ] [ Exit Try ] [ Catch [ exception [ As type ] ] [ When expression ] [ catchStatements ] [ Exit Try ] ] [ Catch … ] [ Finally [ finallyStatements ] ] –RUN ALWAYS End Try | try: 為測試程式碼是否有Bug的區塊. catch: 為在try區塊出現Bug後執行的區塊. 在這區塊處理錯誤 finally: 為最後必定會執行的區塊. 如果所有程式碼在try區塊沒有錯誤, 就會行至Finally的區塊. 如果所有程式碼在try區塊有錯誤, 就會行至Catch的區塊, 再行至Finally的區塊. |
例子一 | |
try{ int a = 1000000; int b = 2000000; int z = a * b; } catch (Exception e) { Console.WriteLine(e.Message); } Finally { Console.WriteLine( “Executed”); } | 流程: 1) 執行try區塊 2) a * b 的結果大於int 數值範圍, 出現 Exception 3) 執行Exception區塊 4) 執行Finally區塊 5) 繼續後面的程式 注意事項: 1) 程式即使在try區塊出現錯鋘, 執行Exception, Finally區塊後, 還可繼程式運行. 這可能是一個問題, 因為有些程式是流水式的, 不能錯過其中的一節, 一部份的錯誤讓它繼續執行可產生整體計算的問題. 2) 在Production Stage時, 在try區塊出現錯鋘, Programmer, User未必能立即看到, 而錯誤讓它繼續執行可令問題不能得到即時解決而累積下去. 例如在計算後相關的Database數據. |
例子二 | |
try{ int a = 1000000; int b = 2000000; int z = a * b; } catch (Exception e) { Console.WriteLine(e.Message); throw new Exception(); } finally { Console.WriteLine( “executed”); } | 流程: 1) 執行try區塊 2) a * b 的結果大於int 數值範圍, 出現 Exception 3) 執行Exception區塊 4) throw exception 5) App掛掉, 不能繼續後面的程式 |
參考資料: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch