真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JAVA異常處理方式是什么

這篇文章主要講解了“JAVA異常處理方式是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JAVA異常處理方式是什么”吧!

成都創(chuàng)新互聯(lián)主營雙臺子網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),雙臺子h5微信小程序開發(fā)搭建,雙臺子網(wǎng)站營銷推廣歡迎雙臺子等地區(qū)企業(yè)咨詢

1:try-catch

結(jié)構(gòu):

*  結(jié)構(gòu):
 * try{
 * 可能出現(xiàn)異常de代碼段
 * }catch(可能出現(xiàn)的異常){
 * 解決辦法
 * }

 
順序:

*  try-catch的執(zhí)行順序:
 *   1、執(zhí)行try塊中的代碼塊  如果出現(xiàn)異常
 *    2、通過出現(xiàn)的異常去匹配 catch中聲明的異常類型
 *    3、如果匹配成功 執(zhí)行catch中的代碼塊         如果匹配失敗  jvm處理當(dāng)前異常信息 (終止程序 輸出異常信息)
 *    4、繼續(xù)執(zhí)行剩下的代碼

 
例子:

  1. public class Test04 {  

  2.     public static void main(String[] args) {  

  3.         try{  

  4.             int num = 1/0;//new ArithmeticException()  

  5.             System.out.println(num);  

  6.         }catch(InputMismatchException e){ //InputMismatchException e = new ArithmeticException();  

  7.             System.out.println("除數(shù)不能為0");  

  8.         }  

  9.           

  10.         System.out.println("嘿嘿");  

  11.           

  12.     }  

  13. }  

 
注意事項

PS:只能處理一種異常信息。

 

2:try-多重catch

結(jié)構(gòu):

*  結(jié)構(gòu):
 *   try{
 *   可能出現(xiàn)異常的代碼
 *   }catch(異常類型1 e1){
 *   解決方案1
 *   }catch(異常類型2 e2){
 *   解決方案2
 *   }catch(異常類型3 e3){
 *   解決方案3
 *   }。。。。{
 *   }

 
順序

* 執(zhí)行順序:
 * 1、執(zhí)行try塊 如果出現(xiàn)異常
 * 2、以此匹配多重catch中聲明的異常
 * 3、如果匹配成功 執(zhí)行當(dāng)前匹配成功的catch塊 try-catch塊執(zhí)行完畢 繼續(xù)執(zhí)行下面的代碼
 * 4、如果匹配失敗 交由jvm處理 程序終止 輸出異常信息
 * 5、一般情況下我們都會在最后一個catch中加入Exception 獲取可能沒有捕獲的異常信息

 
例子

  1. public class Test05 {  

  2.     public static void main(String[] args) {  

  3.           

  4.         Scanner input = new Scanner(System.in);  

  5.           

  6.         try{  

  7.             System.out.println("請輸入被除數(shù)---->");  

  8.             int num1 = input.nextInt();  

  9.             System.out.println("請輸入除數(shù)---->");  

  10.             int num2 = input.nextInt();  

  11.             System.out.println(num1+"/"+num2+"="+(num1/num2));  

  12.               

  13.         }catch(InputMismatchException e){//這個異常對象中沒有維護異常的原因 所以通過getMessage獲取不到異常信息  null值  

  14.             //e.printStackTrace();   

  15.             System.out.println(e.getMessage());  

  16.             System.out.println("用戶輸入有誤");  

  17.         }catch(ArithmeticException e){//這個異常對象中維護異常的原因 所以通過getMessage可以獲取到異常信息  

  18.             System.out.println(e.getMessage());//by zero  

  19.             System.out.println("除數(shù)不能為0");  

  20.               

  21.               

  22.         }catch(Exception e){//Exception e = new 可能出現(xiàn)的異常();   父類變量指向了子類對象   

  23.             //多態(tài)  

  24.             System.out.println(e.getMessage());  

  25.             System.out.println("外星人把頁面叼走了 請等待。。。");  

  26.         }  

  27.           

  28.     }  

  29. }  

 
注意事項:

PS:
  1. 一般情況下我們都會在最后一個catch中加入Exception 獲取可能沒有捕獲的異常信息

  2. 常見的異常的對象中的方法:

* 異常中常見的方法:
      * e.getMessage() -->獲取異常的原因藐視
      * e.printStackTrace()  -->打印異常的出現(xiàn)行數(shù)以及異常的全限定名* e.toString  --> 異常的全限定名

 

3:try-多重catch-finally

結(jié)構(gòu):

* 結(jié)構(gòu):
 * try{
 *   可能出現(xiàn)異常的代碼
 *   }catch(異常類型1 e1){
 *   解決方案1
 *   }catch(異常類型2 e2){
 *   解決方案2
 *   }catch(異常類型3 e3){
 *   解決方案3
 *   }。。。。{
 *   }finally{
 *   代碼塊
 *   }

 
順序:

* 執(zhí)行順序:
 * 1、執(zhí)行try塊 如果出現(xiàn)異常
 * 2、以此匹配多重catch中聲明的異常
 * 3、如果匹配成功 執(zhí)行當(dāng)前匹配成功的catch塊  執(zhí)行finally代碼塊 try-catch-finally塊執(zhí)行完畢 繼續(xù)執(zhí)行下面的代碼
 * 4、如果匹配失敗 交由jvm處理 程序終止 輸出異常信息 也會執(zhí)行finally代碼塊
 * 5、一般情況下我們都會在最后一個catch中加入Exception 獲取可能沒有捕獲的異常信息
 * 6、一般情況下通過finally去關(guān)閉連接資源

 
例子:

  1. public class Test06 {  

  2.     public static void main(String[] args) {  

  3.         Scanner input  = null;  

  4.         try{  

  5.               

  6.             input = new Scanner(System.in);  

  7.             System.out.println("請輸入被除數(shù)---->");  

  8.             int num1 = input.nextInt();  

  9.             System.out.println("請輸入除數(shù)---->");  

  10.             int num2 = input.nextInt();  

  11.             System.exit(0);//關(guān)閉虛擬機 0正常退出  非0 強制退出  

  12.             System.out.println(num1+"/"+num2+"="+(num1/num2));  

  13.               

  14.         }catch(InputMismatchException e){  

  15.             System.out.println("用戶輸入有誤");  

  16.         }catch(ArithmeticException e){  

  17.             System.out.println("除數(shù)不能為0");  

  18.         }catch(Exception e){  

  19.             System.out.println("外星人把頁面叼走了 請等待。。。");  

  20.         }finally{  

  21.               

  22.             System.out.println("我被執(zhí)行了");  

  23.             //在這里關(guān)閉的  

  24.             input.close();  

  25.         }  

  26.           

  27.     }  

  28. }  

 
注意事項:

PS:
  1. finally一定會被執(zhí)行 return 以及異?;蛘呤钦G闆r下都會執(zhí)行finally代碼

  2. System.exit(數(shù)字) 退出虛擬機 0 正常 非0 強制

 
 

4:throws 聲明一個異常

語法格式:

* 注意格式:
 * 方法() throws 異常類型1,異常類型2。。。{}

 
注意事項:

  1. s不要忘記 一個方法可以聲明多個異常信息

  2. 某個方法如果對外聲明一個異常,那么調(diào)用者一定要解決當(dāng)前異常。解決方案:

    A、try-catch     B、繼續(xù)向外聲明

 
案例:

  1. public class Test08 {  

  2.     public static void main(String[] args)throws Exception {  

  3.         /*try{

  4.              

  5.             //1、調(diào)用add方法

  6.             add(1,2);

  7.         }catch(Exception e){

  8.              

  9.         }*/  

  10.         System.out.println(add(1,43));  

  11.           

  12.     }  

  13.       

  14.     /*

  15.      * 計算兩個數(shù)相加

  16.      * 調(diào)用這個方法可能出現(xiàn)異常

  17.      * 這個方法就必須對外聲明一個異常

  18.      */  

  19.     public static int add(int num1,int num2)throws Exception{  

  20.         return num1+num2;  

  21.     }  

  22.       

  23. }  

 

5:throw拋出異常信息

語法格式:

throw new 異常類型();
PS:拋出異常是在方法內(nèi)部編寫的

 
注意事項:

  1. throw 拋出異常在方法體體編寫

  2. 一般情況下和throws一起使用

 
案例:

  1. public class Test09 {  

  2.     public static void main(String[] args) {  

  3.         //1、創(chuàng)建一個user對象  

  4.         User u = new User();  

  5.         //2、解決異常  

  6.         try {  

  7.             u.setGender(12);//new Exception();  

  8.         } catch (Exception e) {  

  9.             e.printStackTrace();  

  10.         }  

  11.           

  12.           

  13.     }  

  14.       

  15.       

  16. }  

  17. class User{  

  18.       

  19.     private int gender;  

  20.       

  21.     public User() {  

  22.         // TODO Auto-generated constructor stub  

  23.     }  

  24.   

  25.     public int getGender() {  

  26.         return gender;  

  27.     }  

  28.   

  29.     public void setGender(int gender) throws Exception{  

  30.         //判定gender的值  

  31.         if(gender==0||gender==1){  

  32.             this.gender = gender;  

  33.         }else{  

  34.             //拋出一個異常  

  35.             throw new Exception();  

  36.         }  

  37.     }  

  38. }  

6:自定義異常:

自定義異常的步驟:

* 如何自定義異常:
 * 1、創(chuàng)建一個類 讓當(dāng)前類要么繼承Exception 要么繼承RuntimeException
 *  2、編寫當(dāng)前類的構(gòu)造器  :
 *   a、一定要寫空構(gòu)造器
 *   b、一定要寫一個帶異常原因描述的構(gòu)造器 (帶一個String參數(shù)的構(gòu)造器)
 *  3、在構(gòu)造器內(nèi)部通過super()調(diào)用父類的構(gòu)造器即可

 
自定義異常如何獲取異常信息:類圖:
JAVA異常處理方式是什么 
實例:

  1. public class GenderException extends Exception{  

  2.       

  3.     public GenderException(){  

  4.           

  5.     }  

  6.       

  7.     public GenderException(String str){  

  8.         super(str);  

  9.     }  

  10.       

  11. }  

 
測試類:

  1. public class Test11 {  

  2.     public static void main(String[] args) {  

  3.           

  4.           

  5.         //1、創(chuàng)建一個Person對象  

  6.         Person p = new Person();  

  7.         try{  

  8.             p.setGender(10);  

  9.               

  10.         }catch(GenderException e){  

  11.             System.out.println(e.getMessage());  

  12.         }  

  13.           

  14.         System.out.println(p.getGender()==0?"女生":"男生");  

  15.           

  16.           

  17.     }  

  18. }  

  19. class Person{  

  20.       

  21.     private int gender;  

  22.       

  23.     public Person() {  

  24.         // TODO Auto-generated constructor stub  

  25.     }  

  26.   

  27.     public int getGender() {  

  28.         return gender;  

  29.     }  

  30.   

  31.     public void setGender(int gender) throws GenderException,NullPointerException{  

  32.         if(gender==0||gender==1){  

  33.             this.gender = gender;             

  34.         }else{  

  35.             //拋出異常  

  36.             throw new GenderException("性別賦值錯誤");  

  37.         }  

  38.     }  

  39.       

  40.       

  41.       

  42.       

  43. }  

 
PS:當(dāng)int作為屬性時它是具有默認值,默認值是0.而這個值有可能導(dǎo)致程序運行期間出現(xiàn)不穩(wěn)定因素

感謝各位的閱讀,以上就是“JAVA異常處理方式是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對JAVA異常處理方式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


當(dāng)前題目:JAVA異常處理方式是什么
文章URL:http://weahome.cn/article/ijdcjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部