標籤:異常處理 integer rgs message 異常處理機制 處理機 程式開發 異常捕獲 public
java異常處理機制
在整個Java的異常處理中,實際上也是按照物件導向的方式進行處理,處理步驟如下:
(1) 一旦產生異常,則首先會產生一個異常類的執行個體對象。
(2) 在try語句對此異常對象進行捕捉。
(3) 產生的異常對象與catch語句中的各個異常類型進行匹配,如果匹配成功,則執行catch語句中的代碼。
Try{
//產生異常代碼,併產生異常類的執行個體對象
}catch(Exception e){
//匹配異常類型
//執行異常處理代碼
}finally{
//異常統一出口
}
開發常見問題之一:程式開發中不會只存在一個異常,肯定會同時存在多個異常,此是,就需要使用多個catch語句進行處理,那捕獲異常如何排順?所以要注意,在Java中所有捕獲範圍小的異常必須放在捕獲大的異常之前,否則程式編譯時間就會出現錯誤。
代碼:
- public class ExceptionDemo{
- public static void main(String args[]){
-
- System.out.println("計算開始");
- int i=0 ;
- int j=0 ;
- try{
- String str1 = args[0] ;
- String str2 = args[1] ;
- i = Integer.parseInt(str1) ;
- j = Integer.parseInt(str2) ;
- int result = i /j ; .......................產生異常
- System.out.println("兩個數字相除結果:"+result) ;
- }catch(Exception e1){ ..................異常捕獲範圍大
-
- System.out.println("其它異常:"+e1.getMessage()) ;
-
- }catch(ArithmeticException e2){ ................錯誤,無法捕獲
-
- System.out.println("算術異常:"+e2.getMessage()) ;
-
- }finally{
-
- System.out.println("計算結果") ; .............出口,一定執行
-
- }
-
- }
- }
引用
結果:編譯出錯。
引用
開發常見問題之二:throw與throws區別。在定義一個方法時可以使用throws聲明,使用throws聲明的方法表示此方法不處理異常而交給方法調用處進行處理;而throw則直接拋出異常,兩都常在一起使用,throw常用於自訂異常處理。上述為例說明
Java代碼
- public class ExceptionDemo{
- //執行相除
- public int div(int i,int j) throws Exception{.....往上拋,由方法調用處進行處理,這裡則由主方法處理
- int result = 0 ;
- try{
-
- result = i / j ;
-
- }catch(Exception e){
-
- throw e; ........直接拋出異常
-
- }
- return result;
- }
- //主方法
- public static void main(String args[]){
-
- ExceptionDemo ex = new ExceptionDemo();
-
- try{
-
- System.out.println("操作結果:"+ex.div(8,4));
-
- }catch(Exception e){
-
- System.out.println(e.getMessage()) ;
-
- }
- }
- }
java異常處理機制