異常
1、異常的定義
- 異常指的是程序運行中出現的各種狀況,如:文件找不到、網絡連接失敗、非法參數等等;
- 異常是發生在程序運行期間,它影響了正常的程序的執行流程;
1、Throwable 異常的總接口
-
java把異常處理當成對象類處理,並定義一個基類 java.lang.Throwable 作為所有異常的超類(基類 - 類似於object情況)
-
java異常分為兩大類Error 和 Exceptiong;
- Exception
- IOException IO異常
- FileNotFoundException (文件找不到異常)
- EOFException
- RuntimeException 運行時異常
- ArrayIndexOutOfBoundException (數組下標越界)
- NullPointerException (空指針異常)
- ArithmeticException (算數異常)
- MissingResourceException(丟失資源)
- ClassNotFoundException(找不到類)
- IOException IO異常
- Error
- VirtulMachineError 虛擬機錯誤
- AWTError 圖形界面編程錯誤
- Exception
2、處理異常的,五個關鍵字
-
try - 捕獲異常
-
catch - 處理異常
-
finally - 在末尾,一定會執行
-
throw - 拋出一個具體的異常(一般在方法中使用)
-
throws - 拋出總異常
捕獲異常快捷鍵 - Ctrl + Alt + T
public class Exception01 {
public static void main(String[] args) {
int a = 1;
int b = 0;
try { // try 監控區域
System.out.println(a/b);
}catch (ArithmeticException e1){ // 捕獲對應的異常
System.out.println("程序異常,變量b不能為0");
}catch (Exception e2){
System.out.println("程序異常"); // 可以捕獲多種異常,每種異常都可以設置成不同情況
}// 捕獲多個異常要重小到大的捕獲,不然會報錯
finally { // finally 是一定會進行執行的,處理出現異常后程序后續處理 - finally可以看情況不用
System.out.println("善后工作");// 例如關閉io流等操作都放在finally里面
}
}
}
3、自定義異常
- 創建一個自定義的類,然后繼承Exception 類
public class Exception01 {
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
System.out.println("輸出異常:"+e);;
}
}
// 定義個方法,拋出異常
static void test (int a1) throws MyException {
if (a1 > 10){
throw new MyException(a1);// 方法中拋出我們定義的異常
}
System.out.println("正常");
}
}
// 定義自己的異常
class MyException extends Exception{
private int detail;
// 通過構造器接收數據,然后進行處理判斷
public MyException(int a) {
this.detail = a;
}
// 把我們傳入的參數邏輯判斷之后然后返回打印
// toString :異常信息的打印 -- 這里可以自己做定義
@Override
public String toString() {
return "我定義的異常{" +
+ detail +
'}';
}
}
4、常見的異常類
- NullPointerException:當應用程序試圖訪問空對象時,則拋出該異常。
- SQLException:提供關於數據庫訪問錯誤或其他錯誤信息的異常。
- IndexOutOfBoundsException:指示某排序索引(例如對數組、字符串或向量的排序)超出范圍時拋出。
- NumberFormatException:當應用程序試圖將字符串轉換成一種數值類型,但該字符串不能轉換為適當格式時,拋出該異常。
- FileNotFoundException:當試圖打開指定路徑名表示的文件失敗時,拋出此異常。
- IOException:當發生某種I/O異常時,拋出此異常。此類是失敗或中斷的I/O操作生成的異常的通用類。
- ClassCastException:當試圖將對象強制轉換為不是實例的子類時,拋出該異常。
- ArrayStoreException:試圖將錯誤類型的對象存儲到一個對象數組時拋出的異常。
- IllegalArgumentException:拋出的異常表明向方法傳遞了一個不合法或不正確的參數。
- ArithmeticException:當出現異常的運算條件時,拋出此異常。例如,一個整數“除以零”時,拋出此類的一個實例。
- NegativeArraySizeException:如果應用程序試圖創建大小為負的數組,則拋出該異常。
- NoSuchMethodException:無法找到某一特定方法時,拋出該異常。
- SecurityException:由安全管理器拋出的異常,指示存在安全侵犯。
- UnsupportedOperationException:當不支持請求的操作時,拋出該異常。
- RuntimeExceptionRuntimeException:是那些可能在Java虛擬機正常運行期間拋出的異常的超類。