簡單了解 Java 例外
1、實際作業中,遇到的情況不可能是非常完美的,
比如:你寫的某個模塊,用戶輸入不一定符合你的要求;
你的程式要打開某個檔案,這個檔案可能不存在或者檔案格式不對;
你要讀取資料庫的資料,資料可能是空的等;
我們的程式在跑著,記憶體或硬碟可能滿了,等等等等,
2、軟體程式在運行程序中,可能遇到剛剛提到的這些例外問題,我們叫例外,英文是 Exception,意思是例外,
這些例外情況,或者叫例外,怎么讓我們寫的程式做出合理的處理,而不至于程式奔潰,那我們就需要捕獲例外,
3、例外指程式運行中出現的不期而至的各種狀況,如:檔案找不到、網路連接失敗、非法引數等,
例外可能發生在程式運行期間,它影響了正常的程式執行流程,
要理解 Java 例外處理是如何作業的,需要掌握以下三種型別的例外
1、檢查性例外:最具代表的檢查性例外是用戶錯誤或問題引起的例外,這是程式員無法預見的,
例如要打開一個不存在的檔案時,一個例外就發生了,這些例外在編譯時不能被簡單地忽略,
2、運行時例外:運行是例外是可能被程式員避免的例外,與檢查性例外相反,運行時例外可以在編譯時被忽略,
3、錯誤 ERROR:錯誤不是例外,而是脫離程式員控制的問題,錯誤在代碼中通常被忽略,
例如,當堆疊溢位時,一個錯誤就發生了,它們在編譯時也檢查不到的,
例外體系結構
1、Java 把例外當作物件來處理,并定義一個基類 java.lang.Throwable 作為所有例外的超類,
2、在 Java API 中已經定義了許多例外類,這些例外類分為兩大類,錯誤 Error 和例外 Exception,

Error
1、Error 類物件由 Java 虛擬機生成并拋出,大多數錯誤與代碼撰寫者所執行的操作無關,
2、Java 虛擬機運行錯誤(Virtual MachineError),當 JVM 不再有繼續執行操作所需的記憶體資源時,
將出現 OutOfMemoryError,這些例外發生時,Java 虛擬機(JVM)一般會選擇執行緒終止,
3、還有發生在虛擬機試圖執行應用時,如類定義錯誤(NoClassDefFoundError)、鏈接錯誤(LinkageError),
這些錯誤是不可查的,因為它們在應用程式的控制和處理能力之外,而且絕大多數是程式運行時不允許出現的狀,
Exception
1、在 Exception 分支中有一個重要的子類 RuntimeException(運行時例外)
ArrayIndexOutOfBoundsException(陣列下標越界)
NullPointerException(空指標例外)
ArithmeticException(算數例外)
MissingResourceException(丟失資源)
ClassNotFoundException(找不到類)等例外,這些例外是不檢查例外,程式中可以選擇捕獲例外,也可以不處理,
2、這些例外一般都是由程式邏輯錯誤引起的,程式應該從邏輯角度盡可能避免這類例外的發生,
3、Error 和 Exception 的區別:Error 通常是災難性的致命的錯誤,是程式無法控制和處理的,當出現這些例外時,Java 的虛擬機(JVM)一般會選擇終止執行緒;Exception 通常情況下是可以被程式處理的,并且在程式中應該盡可能的去處理這些例外,
package exception; /** * 一、簡單了解 Java 例外: * 1、實際作業中,遇到的情況不可能是非常完美的, * 比如:你寫的某個模塊,用戶輸入不一定符合你的要求; * 你的程式要打開某個檔案,這個檔案可能不存在或者檔案格式不對; * 你要讀取資料庫的資料,資料可能是空的等; * 我們的程式在跑著,記憶體或硬碟可能滿了,等等等等, * 2、軟體程式在運行程序中,可能遇到剛剛提到的這些例外問題,我們叫例外,英文是 Exception,意思是例外, * 這些例外情況,或者叫例外,怎么讓我們寫的程式做出合理的處理,而不至于程式奔潰,那我們就需要捕獲例外, * 3、例外指程式運行中出現的不期而至的各種狀況,如:檔案找不到、網路連接失敗、非法引數等, * 例外可能發生在程式運行期間,它影響了正常的程式執行流程, * * 二、要理解 Java 例外處理是如何作業的,需要掌握以下三種型別的例外: * 1、檢查性例外:最具代表的檢查性例外是用戶錯誤或問題引起的例外,這是程式員無法預見的, * 例如要打開一個不存在的檔案時,一個例外就發生了,這些例外在編譯時不能被簡單地忽略, * 2、運行時例外:運行是例外是可能被程式員避免的例外,與檢查性例外相反,運行時例外可以在編譯時被忽略, * 3、錯誤 ERROR:錯誤不是例外,而是脫離程式員控制的問題,錯誤在代碼中通常被忽略, * 例如,當堆疊溢位時,一個錯誤就發生了,它們在編譯時也檢查不到的, * * 三、例外體系結構 * 1、Java 把例外當作物件來處理,并定義一個基類 java.lang.Throwable 作為所有例外的超類, * 2、在 Java API 中已經定義了許多例外類,這些例外類分為兩大類,錯誤 Error 和例外 Exception, * * 四、Error * 1、Error 類物件由 Java 虛擬機生成并拋出,大多數錯誤與代碼撰寫者所執行的操作無關, * 2、Java 虛擬機運行錯誤(Virtual MachineError),當 JVM 不再有繼續執行操作所需的記憶體資源時, * 將出現 OutOfMemoryError,這些例外發生時,Java 虛擬機(JVM)一般會選擇執行緒終止, * 3、還有發生在虛擬機試圖執行應用時,如類定義錯誤(NoClassDefFoundError)、鏈接錯誤(LinkageError), * 這些錯誤是不可查的,因為它們在應用程式的控制和處理能力之外,而且絕大多數是程式運行時不允許出現的狀況, * * 五、Exception * 1、在 Exception 分支中有一個重要的子類 RuntimeException(運行時例外) * ArrayIndexOutOfBoundsException(陣列下標越界) * NullPointerException(空指標例外) * ArithmeticException(算數例外) * MissingResourceException(丟失資源) * ClassNotFoundException(找不到類)等例外,這些例外是不檢查例外,程式中可以選擇捕獲例外,也可以不處理, * 2、這些例外一般都是由程式邏輯錯誤引起的,程式應該從邏輯角度盡可能避免這類例外的發生, * 3、Error 和 Exception 的區別:Error 通常是災難性的致命的錯誤,是程式無法控制和處理的, * 當出現這些例外時,Java 的虛擬機(JVM)一般會選擇終止執行緒; * Exception 通常情況下是可以被程式處理的,并且在程式中應該盡可能的去處理這些例外, */ public class Demo1 { public static void main(String[] args) { //new 一個匿名內部類,呼叫 a 方法 new Demo1().a(); //a 調 b,b 調 a,一直無限回圈,報例外(Error) } //a 方法呼叫 b 方法 public void a(){ b(); } //b 方法呼叫 a 方法 public void b() { a(); } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/195916.html
標籤:Java
下一篇:020_Java流程控制
