異常


異常

1、異常的定義

  • 異常指的是程序運行中出現的各種狀況,如:文件找不到、網絡連接失敗、非法參數等等;
  • 異常是發生在程序運行期間,它影響了正常的程序的執行流程;

1、Throwable 異常的總接口

  • java把異常處理當成對象類處理,並定義一個基類 java.lang.Throwable 作為所有異常的超類(基類 - 類似於object情況)

  • java異常分為兩大類Error 和 Exceptiong;

    1. Exception
      • IOException IO異常
        • FileNotFoundException (文件找不到異常)
        • EOFException
      • RuntimeException 運行時異常
        • ArrayIndexOutOfBoundException (數組下標越界)
        • NullPointerException (空指針異常)
        • ArithmeticException (算數異常)
        • MissingResourceException(丟失資源)
        • ClassNotFoundException(找不到類)
    2. Error
      • VirtulMachineError 虛擬機錯誤
      • AWTError 圖形界面編程錯誤

    1639797059154

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虛擬機正常運行期間拋出的異常的超類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM