Java中的多異常捕獲問題最後
阿新 • • 發佈:2019-01-25
在Java7以前,每個catch塊只能捕獲一種型別的異常;但是從Java7開始,一個catch塊可以捕獲多種型別的異常。使用一個catch塊捕獲多種型別的異常時需要注意一下兩個地方。
1 多種異常型別之間用豎線(|)隔開。
2捕獲多種型別的異常時,異常變數有隱式的final修飾,因此程式不能夠對異常進行重新複製。
多異常捕獲程式碼如下:
public class MultiExceptionTest { public static void main(String[] args) { try{ int a=Integer.parseInt(args[0]); int b=Integer.parseInt(args[1]); int c=a/b; System.out.println("您輸入的兩個數相除的結果是:"+c); } catch(IndexOutOfBoundsException|NumberFormatException| ArithmeticException ie){ System.out.println("程式發生了陣列越界、數字格式異常、算數異常之一"); ie=new ArithmeticException("tese");//此行程式碼將會發生錯誤,因為一個catch捕獲多個異常會預設final宣告,不能進行重新賦值 } catch(Exception e) { System.out.println("未知異常"); e=new RuntimeException("test"); } } }
執行上面的程式碼產生如下效果圖:
最後補充一點:進行多異常捕獲是,要先捕獲小的異常在捕獲大異常,否則無法訪問小異常,例如上述程式碼塊如果catch先捕獲exception異常,在捕獲另外三個小異常,由於那三個小異常都是excpetion的子類,所以不會得到執行的機會。