1. 程式人生 > >Java中的多異常捕獲問題最後

Java中的多異常捕獲問題最後

  在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的子類,所以不會得到執行的機會。