更新時間:2022年10月20日13時46分 來源:傳智教育 瀏覽次數(shù):
在文件4-24中,由于發(fā)生了異常導(dǎo)致程序立即終止,因此程序無法繼續(xù)向下執(zhí)行。為了解決異常,Java提供了對異常進行處理的方式——異常捕獲。異常捕獲使用try...cathch語句實現(xiàn),try...cathch具體語法格式如下:
try{ //程序代碼塊 }catch (ExceptionType (Exception類及其子類) e) { //對ExceptionType的處理 }
上述語法格式中,在try代碼塊中編寫可能發(fā)生異常的Java語句,在catch代碼塊中編寫針對異常進行處理的代碼。當(dāng)try代碼塊中的程序發(fā)生了異常,系統(tǒng)會將異常的信息封裝成一個異常對象,并將這個對象傳遞給catch代碼塊進行處理。catch代碼塊需要一個參數(shù)指明它所能接收的異常類型,這個參數(shù)的類型必須是Exception類或其子類。
下面使用try...catch語句對文件4-24中出現(xiàn)的異常進行捕獲,如文件4-25所示。
文件4-25 Example25.java
public class Example25 { public static void main (String[] args) { // 下面的代碼定義了一個try...catch語句用于捕獲異常 try { int result = divide (4, 0); //調(diào)用divide()方法 System.out.println (result); }catch (Exception e) { //對異常進行處理 System.out.println ("捕獲的異常信息為: " + e.getMessage ()); } System.out.println ("程序繼續(xù)向下執(zhí)行..."); } //下面的方法實現(xiàn)了兩個整數(shù)相除 public static int divide (int x, int y) { int result = x / y; //定義一個變量result記錄兩個數(shù)相除的結(jié)果 return result; //將結(jié)果返回 } }
在文件4-25中,第4~9行代碼是對可能發(fā)生異常的代碼用try...catch語句進行了處理。在try代碼塊中發(fā)生除0異常外,程序會通過catch語句捕獲異常,第8行代碼在catch語句中通過調(diào)用Exception對象的getMessage()方法,返回異常信息“/by zero”。catch代碼塊對異常處理完畢,程序仍會向下執(zhí)行,而不會終止程序。
需要注意的是,在try代碼塊中,發(fā)生異常語句后面的代碼是不會被執(zhí)行的,如文件4-25中第6行代碼的打印語句就沒有執(zhí)行。
在程序中,有時候會希望有些語句無論程序是否發(fā)生異常都要執(zhí)行,這時就可以在try...catch語句后加一個finally代碼塊。