Java 例外處理 – Let’s start for (try/catch)!
語法 | |
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) { System.out.println(e); } finally { System.out.println(“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) { System.out.println(e); throw new xxxxxxxxException(“Error”); } finally { System.out.println(“executed”); } | 流程: 1) 執行try區塊 2) a * b 的結果大於int 數值範圍, 出現 Exception 3) 執行Exception區塊 4) throw exception 5) App掛掉, 不能繼續後面的程式 |