Java異常

      Java程序運行過程中,經常會遇到異常情況,遇到最多的應該是NullPointException異常。今天有空,對異常進行了一次小總結。      

 Java規範中Exception是Throwable子類,Throwable還有另一個子類Error。Error一般是虛擬機拋出的比Exception更嚴重的異常,根據直譯也可以叫做錯誤,屬於虛擬機系統級錯誤,程序基本不可以通過後續代碼修復,這裏不做重點討論。

                     

Exception下面有許多繼承子類

        

Exception衆多子類可以分爲兩種一種是受檢異常(Checked exceptions),另一種是非受檢異常(Checked exceptions)。

                          

針對這兩種異常,它們處理方式是一樣。兩種處理方式, 1、在方法調用時處理掉catch,異常處理以後後續可以繼續執行 2、向上層繼續拋出throws,後續代碼不再執行。以非受檢異常說明這兩種處理方式

catch處理

package com.cib.bean;
import org.junit.Test;

public class Order {
	private int i;
@Test
	public void test01() {
		try {
			i = 10 / 0;//以一種比較明顯錯誤說明
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}
         System.out.println("代碼繼續執行");
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}

}
java.lang.ArithmeticException: / by zero
	at com.cib.bean.Order.test01(Order.java:10)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
代碼繼續執行

單元測試時候,運行到i = 10 / 0;  拋出了算術異常,這個時候我們對異常進行了處理,不影響後續打印代碼可以繼續執行。

throws處理

package com.cib.bean;

import org.junit.Test;

public class Order  {
	private int i;
	
	public void test01() throws ArithmeticException{
	     i=10/0;
        System.out.println("代碼繼續執行");
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}

}
這個時候運行,程序執行到 i=10/0;時系統直接報出異常,後續代碼不繼續執行,System.out.println("代碼繼續執行"); 沒有執行下去,程序終止。

以上兩種處理方式比較,可以得到這樣的結論:

對於出現異常代碼throws,那麼出現異常處代碼其後代碼不再繼續執行。如果catch處理,不影響異常代碼後續代碼處理。

另外,當我們在其他方法中調用一段代碼,這段代碼通過throws拋出異常,這個時候需要也對異常進行處理,否則編譯不通過。

end~~~歡迎交流,指正




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章