異常Error和Exception


什么是異常

  • 實際工作中,遇到的情況不可能是非常完美的。比如:你寫的某個模塊,用戶輸入不一定符合你的要求,你的程序要打開某個文件,這個文件不存在或者運行文件格式不對,你要讀取數據庫的數據,數據庫可能是空的等,我們的程序跑着跑着,內存或硬盤可能滿了 ,等等

  • 軟件程序在運行過程中,非常可能遇到剛剛提到的這些異常問題,我們叫異常,英文是:Exception意思是例外,這些,例外,情況或者叫異常,怎么讓我們寫程序作出合理的處理,而不至於程序崩潰。

  • 異常痔程序運行中出現的不期而至的各種狀況,如:文件找不到,網絡連接失敗,非法參數等。

  • 異常發生在程序運行期間,他影響了正常的程序執行流程

簡單分類

  • 要理解Java異常處理是如何工作的,你需要掌握以下三種類型的異常:

  • 檢查性異常:最具代表性的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預見的。列如要打開一個不純在的文件時,一個異常就發生了,這些異常在編譯時不被簡單的忽視。

  • 運行時異常:運行時異常可能被程序員避免的異常,與檢查性異常相反,運行時異常可以在編譯時被忽略。

  • 錯誤ERROR:錯誤就不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略,列如,當棧溢出時,一個錯誤就發生了,他們在編譯也檢查不到的

異常體系結構

  • Java吧異常當做對象來處理,並定義一個基類Java.lang.Throwable作為所有異常的超類

  • 在Java Apl中已經定義了許多異常類,這些異常分為兩大類,錯誤Error和異常Exception

image-20210717145212292

Error

  • Error類對象有Java虛擬機生成並拋出,大多數錯誤也代碼編寫者所執行的操作無關。

  • Java虛擬機運行錯誤(Virtual MachineError)當JVM不在有繼續執行操作說需的內存資源是,將出現 OutOfMemoryError 。這些異常發生時,Java虛擬機(JVM)一般會選擇線程終止;

  • 還有發生在虛擬機識圖執行應用時,如類定義錯誤(NoclassDefFoundError)鏈接錯誤(LinkageError)。這些錯誤是不可查的,因為他們在應用程序的控制和處理能力之外,而且絕大多數是程序運行時不允許出現的狀況

Exception

  • 在Exception分支中有一個重要的子類RuntimeException(運行時異常)

  • ArrayIndexOutOfboundsExcepion(數組下標越界)

  • NullPointerExceotion(空指針異常)

  • ArithmeticException(丟失資源)

  • MissingResourceException(丟失資源)

  • ClassNotFoundException(找不到類)等異常,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以選擇不處理

  • 這些異常一般是有程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生;

  • Erroe和Exception的區別:Error通常是災難性的致命錯誤,是程序無法控制和處理的,當出現這些異常是,Java虛擬機(JVM)一般會選擇終止線程;Exception通常情況下是可以被程序處理的,並且在程序中應該盡可能的去處理這些異常

package exception;

public class Dome02 {
  public static void main(String[] args) {
      System.out.println(11/0);
  }
}

Exception in thread "main" java.lang.ArithmeticException: / by zero at exception.Dome02.main(Dome02.java:5)

Process finished with exit code 1

package exception;

public class Dome01 {
  public static void main(String[] args) {
      new Dome01().a();


  }
  public void a(){
      b();
  }
  public void b(){
      a();
  }
}
at exception.Dome01.b(Dome01.java:13)
at exception.Dome01.a(Dome01.java:10)

Process finished with exit code 1


免責聲明!

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



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