拋出異常有三種形式:系統自動拋出異常、Throw、Throws
一、系統自動拋出異常
如常見的空指針異常、數組越界異常、類型強制轉換異常
public static void main(String[] args) {
int a = 1;
int b = 0;
System.out.println( a / b);
}
Exception in thread "main" java.lang.ArithmeticException: / by zero
at base.test.main(test.java:32)
二、Throw
throw是語句主動拋出一個異常,一般是在代碼的內部,當程序出現某種邏輯錯誤時同程序主動拋出某種特定類型的異常
if (1 == 1)
throw new NullPointerException();
三、Throws
throws是定義在函數方法上,可能會拋出一個異常,並不一定拋出異常。允許定義多個異常(要清楚異常的層級關係)
public static void throwChecked(int a)throws Exception{
}
面試常被問到:throw和throws的區別:
1、Throw用於方法內部,Throws用於函數方法聲明上
2、Throw後跟異常對象,Throws後跟異常類型
3、Throw後只能跟一個異常對象,Throws後可以一次聲明多種異常類型
4、Throw一定拋出異常,Throws可能拋出異常