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