Java基礎(chǔ)入門之異常的那些事兒
前言
大家好,我是Java進(jìn)階者。這篇文章我們主要介紹Java基礎(chǔ)入門之try...catch、finally、throws關(guān)鍵字和拋出異常知識(shí),一起來學(xué)習(xí)下吧!
一、try...catch和finally
(一)使用多重catch 語句
1.有些時(shí)候,當(dāng)單個(gè)代碼段可能會(huì)引起多個(gè)異常,為了處理這種狀況,可以使用兩個(gè)或多個(gè)catch子句,每個(gè)子句捕獲一種類型的異常。
2.使用多重catch語句格式
- try
- {
- 可能發(fā)生異常的代碼塊;
- }
- catch(異常類型1 異常對(duì)象名1)
- {
- 異常處理代碼塊1;
- }
- catch(異常類型2 異常對(duì)象名2)
- {
- 異常處理代碼塊2;
- }
- …
- catch(異常類型n 異常對(duì)象名n)
- {
- 異常處理代碼塊n;
- }
(二)finally關(guān)鍵字
1.如果我們希望有些語句無論程序是否發(fā)生異常,都要執(zhí)行我們就可以使用try...catch后面加個(gè)finally關(guān)鍵字。
2.finally關(guān)鍵字的使用語法格式
- try
- {
- 可能發(fā)生異常的代碼塊;
- }
- catch(異常類型 異常對(duì)象名)
- {
- 異常處理代碼塊;
- }
- finally
- {
- 不管有沒有產(chǎn)生異常都要執(zhí)行的代碼;
- }
3.try...catch后面加個(gè)finally關(guān)鍵字的使用例子
- public class p35 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //定義一個(gè)try...catch語句捕獲異常
- try{
- int result=div(6,0);//調(diào)用div()方法
- System.out.println(result);
- }catch(Exception e){//捕獲并處理異常
- System.out.println("捕獲異常信息為"+e.getMessage());
- return;//用于結(jié)束當(dāng)前語句
- }finally{
- System.out.println("finally代碼塊...");
- }
- System.out.println("程序繼續(xù)向下執(zhí)行");
- }
- //此方法實(shí)現(xiàn)兩個(gè)整數(shù)相除
- public static int div(int a,int b){
- int result=a/b;//定義一個(gè)int類型變量result,保存兩個(gè)數(shù)相除結(jié)果
- return result;//結(jié)果返回值
- }
- }
運(yùn)行的結(jié)果是:

從上面代碼中,try的大括號(hào)里面是可能發(fā)生異常代碼塊,catch是捕獲并處理異常,在catch代碼塊中加了一個(gè)return語句,主要是結(jié)束當(dāng)前語句。我們發(fā)現(xiàn)System.out.println("程序繼續(xù)向下執(zhí)行")這個(gè)輸出語句不被執(zhí)行,然而finally關(guān)鍵字代碼塊中是被執(zhí)行了,沒有被return語句影響到,不管這個(gè)程序是否發(fā)生異常這個(gè)finally代碼塊的語句都會(huì)被執(zhí)行。
二、throws關(guān)鍵字
1.使用throws關(guān)鍵字的子句標(biāo)記方法的聲明,表示這個(gè)方法不對(duì)產(chǎn)生的異常進(jìn)行處理,而是向調(diào)用它的方法拋出這個(gè)異常。
2.thorws關(guān)鍵字拋出異常的語法格式:
- [修飾符] 返回類型 方法名(參數(shù)1,參數(shù)2,……)throws 異常列表
- {
- ……
- }
3.thorws關(guān)鍵字使用例子
- public class p35 {
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- int result=div(16,2);//調(diào)用div()方法
- System.out.println(result);
- }
- //此方法實(shí)現(xiàn)兩個(gè)整數(shù)相除,使用throws關(guān)鍵字聲明拋出異常
- public static int div(int a,int b) throws Exception{
- int result=a/b;//定義一個(gè)int類型變量result,保存兩個(gè)數(shù)相除結(jié)果
- return result;//結(jié)果返回值
- }
- }
運(yùn)行的結(jié)果是:

從上面代碼中,在main()方法后面加throws關(guān)鍵字使用拋出異常,它的最終是由虛擬機(jī)來處理這個(gè)異常的。在main()方法中調(diào)用div()方法,定義實(shí)現(xiàn)方法兩個(gè)整數(shù)相除,使用throws關(guān)鍵字聲明拋出異常。除了已定義的異常,開發(fā)人員還可以根據(jù)情況自定義異常類,定義時(shí)只要讓該類繼承Exception。
三、拋出異常
1.使用throw關(guān)鍵字用在方法中聲明拋出異常的實(shí)例對(duì)象。
2.拋出異常首先要產(chǎn)生異常對(duì)象,手動(dòng)拋出的異常對(duì)象,一定是Throwable或其子類的實(shí)例。它的語法語句如下:
- throw 異常對(duì)象;
3.所有的異常類都有兩個(gè)構(gòu)造方法,以Exception類為例,生成Exception類的異常對(duì)象可以使用下面兩個(gè)構(gòu)造方法之一:
- public Exception( );
- public Exception(String s );
四、總結(jié)
本文主要介紹了try...catch和finally、throws關(guān)鍵字、拋出異常。
try...catch和finally介紹了使用多重catch語句格式、finally關(guān)鍵字的使用語法格式,通過try...catch后面加個(gè)finally關(guān)鍵字例子幫助理解是如何使用的。
使用throws關(guān)鍵字的子句標(biāo)記方法的聲明,表示這個(gè)方法不對(duì)產(chǎn)生的異常進(jìn)行處理,而是向調(diào)用它的方法拋出這個(gè)異常。拋出異常使用throw關(guān)鍵字用在方法中聲明拋出異常的實(shí)例對(duì)象。
我是Java進(jìn)階者,希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!