什麼叫異常(Exception):在程序運行過程中出現的錯誤
再看一張圖
異常的分類
異常主要分爲:錯誤、一般性異常(受控異常)、運行期異常(非受控異常)
1)錯誤:如果應用程序出現了Error,那麼將無法恢復,只能重新啓動應用程序,最典型的Error的異常是:OutOfMemoryError(內存溢出)
2)受控異常:出現了這種異常必須顯示的處理,不顯示處理java程序將無法編譯通過
3)非受控異常:此種異常可以不用顯示的處理,例如被0除異常,java沒有要求我們一定要處理
.如何處理異常?
第一種處理方式
異常的捕獲和處理需要採用try和catch來處理,具體格式如下:
try {
//包含了可能產生異常的代碼
}catch(OneException e) {
//處理的方式1
}catch(TwoException e) {
//處理的方式2
}finally {//finally可要可不要
//一定要執行的代碼
}
第二種處理方式
public void haha() throws Exception1 e1,Exception2 e2{
//可能出現異常(尤其是編譯時異常,一定要處理)
//這裏的意思是指將可能出現的異常交給上層去處理,不用自己處理
}
第三種處理方式(自己手動拋出異常+自己定義一個異常)
/**定義一個自定義異常類繼承Exception
* 並寫一個構造函數
*/
public class TestException extends Exception{
public TestException(String string) {
System.out.println(string);;}
}
import java.util.Scanner;
/**
*定義一個簡單的測試類,如果輸入的除數爲0就拋出你“除數不能爲0!” 其實系統會自己檢查拋出異常的,我們這裏僅僅爲了舉例說明如何自定義異常及拋出來
*/
public class Test {
public static void main(String[] args) throws Exception {
int i = 0;
int x = 0;
Scanner input = new Scanner(System.in);
i=input.nextInt();
x=input.nextInt();
double y;
if (i==0) {
throw new TestException("除數不能爲0!!");//拋出自己定義的異常
}
y=x/i;
System.out.println(y);
}
}
顯示結果
0
5
除數不能爲0!!
Exception in thread "main" TestException
at Test.main(Test.java:12)
註釋::如果我們是用eclipse作爲我們IDE的話 ,系統會自己檢查異常的我們會只需要按照系統的提示,拋出相應的異常就行了,但我們要明白異常的體系結構和爲什麼會拋出異常。。。。。。