try和catch是Java中異常處理機制的一部分。
try塊用于包裹可能產生異常的代碼。try塊中的代碼被稱為"受保護的代碼塊",意味著在這個代碼塊中,如果發生了異常,程序仍然可以繼續執行。
catch塊用于捕獲并處理try塊中可能拋出的異常。catch塊中的代碼被稱為"異常處理代碼塊",它會在try塊中拋出的異常與catch塊中指定的異常類型匹配時執行。
基本語法如下:
try {
// 可能發生異常的代碼
} catch (ExceptionType1 e1) {
// 處理ExceptionType1類型的異常
} catch (ExceptionType2 e2) {
// 處理ExceptionType2類型的異常
} finally {
// 可選部分,無論是否發生異常,都會執行的代碼
}
在try塊中,如果發生了異常,程序會立即跳轉到與異常類型匹配的catch塊中。如果catch塊中的代碼成功處理了異常,程序會繼續執行catch塊之后的代碼。如果catch塊中的代碼沒有處理異常,它可以將異常重新拋出,以供上層代碼繼續處理。
finally塊是可選的,它包含的代碼會在try塊中的代碼執行完畢后無論是否發生異常都會執行。
通常情況下,try塊只能有一個,但可以有多個catch塊,用于處理不同類型的異常。catch塊按照從上到下的順序進行匹配,只有第一個匹配的catch塊會執行。
以下是一個簡單的示例:
try {
int result = 10 / 0; // 可能發生異常的代碼
System.out.println("結果:" + result); // 不會執行,因為異常已經發生
} catch (ArithmeticException e) {
System.out.println("捕獲到算術異常:" + e.getMessage());
} finally {
System.out.println("無論是否發生異常,都會執行");
}
在這個示例中,try塊中的代碼嘗試將整數10除以0,這會導致一個算術異常。catch塊中的代碼會被執行,打印出捕獲到的異常信息。最后,finally塊中的代碼會被執行,無論是否發生了異常。