IT培訓網 - IT職場人學IT技術上IT培訓網
Java語言中try和catch的使用
時間:2016-08-05 17:08:44??來源:Java培訓網??作者:IT培訓網??已有:名學員訪問該課程
Try和catch是什么東東,能學習嗎,如何才可以學好呢,今天達內IT網小編就來給大家詳細介紹下吧!
盡管由Java運行時系統提供的默認異常處理程序對于調試是很有用的,但通常你希望自己處理異常。這樣做有兩個好處。第一,它允許你修正錯誤。第二,它防止程序自動終止。大多數用戶對于在程序終止運行和在無論何時錯誤發生都會打印堆棧軌跡感到很煩惱(至少可以這么說)。幸運的是,這很容易避免。
為防止和處理一個運行時錯誤,只需要把你所要監控的代碼放進一個try塊就可以了。緊跟著try塊的,包括一個說明你希望捕獲的錯誤類型的catch子句。完成這個任務很簡單,下面的程序包含一個處理因為被零除而產生的ArithmeticException 異常的try塊和一個catch子句。
class Exc2 {
public static void main(String args[]) {
int d, a;
try { // monitor a block of code.
d = 0;
a = 42 / d;
System.out.println("This will not be printed.");
} catch (ArithmeticException e) { // catch divide-by-zero error
System.out.println("Division by zero.");
}
System.out.println("After catch statement.");
}
}
該程序輸出如下:
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的值設為零,程序繼續運行。
// Handle an exception and move on.
import java.util.Random;
class HandleError {
public static void main(String args[]) {
int a=0, b=0, c=0;
Random r = new Random();
for(int i=0; i<32000; i++) {
try {
b = r.nextInt();
c = r.nextInt();
a = 12345 / (b/c);
} catch (ArithmeticException e) {
System.out.println("Division by zero.");
a = 0; // set a to zero and continue
}
System.out.println("a: " + a);
}
}
}
顯示一個異常的描述
Throwable重載toString( )方法(由Object定義),所以它返回一個包含異常描述的字符串。你可以通過在println( )中傳給異常一個參數來顯示該異常的描述。例如,前面程序的catch塊可以被重寫成
catch (ArithmeticException e) {
System.out.println("Exception: " + e);
a = 0; // set a to zero and continue
}
當這個版本代替原程序中的版本,程序在標準javaJDK解釋器下運行,每一個被零除錯誤顯示下面的消息:
Exception: java.lang.ArithmeticException: / by zero
盡管在上下文中沒有特殊的值,顯示一個異常描述的能力在其他情況下是很有價值的——特別是當你對異常進行實驗和調試時。
- 上一篇:什么是Java未被捕獲的異常
- 下一篇:如何使用Java 多重catch語句