回覆列表
  • 1 # 弌94922977

    儘管由Java執行時系統提供的預設異常處理程式對於除錯是很有用的,但通常你希望自己處理異常。這樣做有兩個好處。第一,它允許你修正錯誤。第二,它防止程式自動終止。大多數使用者對於在程式終止執行和在無論何時錯誤發生都會列印堆疊軌跡感到很煩惱(至少可以這麼說)。幸運的是,這很容易避免。 為防止和處理一個執行時錯誤,只需要把你所要監控的程式碼放進一個try塊就可以了。緊跟著try塊的,包括一個說明你希望捕獲的錯誤型別的catch子句。完成這個任務很簡單,下面的程式包含一個處理因為被零除而產生的

    該程式輸出如下:Division by zero.After catch statement. 注意在try塊中的對println( )的呼叫是永遠不會執行的。一旦異常被引發,程式控制由try塊轉到catch塊。執行永遠不會從catch塊“返回”到try塊。因此,“This will not be printed。” 將不會被顯示。一旦執行了catch語句,程式控制從整個try/catch機制的下面一行繼續。 一個try和它的catch語句形成了一個單元。catch子句的範圍限制於try語句前面所定義的語句。一個catch語句不能捕獲另一個try宣告所引發的異常(除非是巢狀的try語句情況)。 被try保護的語句宣告必須在一個大括號之內(也就是說,它們必須在一個塊中)。你不能單獨使用try。 構造catch子句的目的是解決異常情況並且像錯誤沒有發生一樣繼續執行。例如,下面的程式中,每一個for迴圈的反覆得到兩個隨機整數。這兩個整數分別被對方除,結果用來除12345。最後的結果存在a中。如果一個除法操作導致被零除錯誤,它將被捕獲,a的值設為零,程式繼續執行。 顯示一個異常的描述Throwable過載toString( )方法(由Object定義),所以它返回一個包含異常描述的字串。你可以透過在println( )中傳給異常一個引數來顯示該異常的描述。例如,前面程式的catch塊可以被重寫成 當這個版本代替原程式中的版本,程式在標準javaJDK直譯器下執行,每一個被零除錯誤顯示下面的訊息: 儘管在上下文中沒有特殊的值,顯示一個異常描述的能力在其他情況下是很有價值的——特別是當你對異常進行實驗和除錯時。

  • 中秋節和大豐收的關聯?
  • 《知否》中“父母之愛子,則為之計深遠”,這句話觸動你了嗎?