標籤:tca ack err 越界 常用方法 功能 處理 awt 計數
一、Java異常概述
在Java中,所有的事件都能由類描述,Java中的異常就是由java.lang包下的異常類描述的。
Throwable(可拋出):異常類的最終父類,它有兩個子類,Error與Exception。
Throwable中常用方法有:
getCause():返回拋出異常的原因。如果 cause 不存在或未知,則返回 null。
getMeage():返回異常的訊息資訊。
printStackTrace():對象的堆疊追蹤輸出至錯誤輸出資料流,作為欄位 System.err 的值。
1、Error(錯誤):表示程式無法處理的錯誤,一般與程式員的執行操作無關。理論上這些錯誤是不允許發生的,如果發生,也不應該試圖通過程式去處理,所以Error不是try-catch的處理對象,而JVM一般的處理方式是終止發生錯誤的線程。Error類常見子類有VirtualMachineError與AWTError。
1-1、VirtualMachineError(虛擬機器錯誤):表示虛擬機器出現錯誤。
在Java運行時記憶體中,除程式計數器外的虛擬機器棧、堆、方法區在請求的記憶體無法被滿足時都會拋出OutOfMemoryError;
而如果線程請求的棧深度超出虛擬機器允許的深度時,就會拋出StackOverFlowError。
1-2、AWTError(AWT組件出錯):這個錯誤並不是很常用。但是提一下AWT與Swing的區別,AWT是使用作業系統中的圖形函數的抽象視窗工具,用C\C++編寫,為了實現Java“一次編譯,處處運行”的理念,AWT使用各個作業系統圖形函數的交集,所以功能較差,但運行速度較快,適合嵌入式Java;
而Swing組件是基於AWT編寫的圖形介面系統,它用純Java編寫,所以必然實現了“一次編譯,處處運行”,但相較於AWT運行速度較慢,適合PC使用。
2、Exception(異常):出現原因取決於程式,所以程式也理應通過try-catch處理。
異常分為兩類:可查異常與不可查異常。
2-1、可查異常:編譯器要求必須處理,否則不能通過編譯,使用try-catch捕獲或者throws拋出。常見的可查異常有IOException(IO錯誤)及其子類EOFExcption(檔案已結束異常)、FileNotFound(檔案未找到異常)。
2-2、不可查異常(也叫運行時異常):編譯期不會檢查,所以在程式中可不處理,但如果發生,會在運行時拋出。所以這類異常要盡量避免!常見的不可查異常都是RuntimeException類及其子類。
2-2-1、NullPointerException:null 指標異常。調用了不存在的對象或未經執行個體化或初始化的對象時會拋出,如當試圖操作一個Null 物件(賦值為null)的屬性、方法時就會拋出。
(執行個體化:通俗的理解就是為對象開闢空間,使其可在規定範圍內被調用。注意:User u;這隻是一個對象聲明,並沒有進行執行個體化或初始化。
初始化:就是把執行個體化後的對象中的基礎資料型別 (Elementary Data Type)欄位賦預設值或設定值,為非基本類型賦值null,對於static欄位只會初始化一次。)
2-2-2、ArithmeticException:算術條件異常。最常見的就是0作除數時會拋出。
2-2-3、ClassNotFoundException:類未找到異常。在通過反射Class.forName(“類名”)來擷取類時,如果未找到則會拋出異常。
2-2-4、ArrayIndexOutOfBoundsException:數組索引越界異常。當試圖運算元組的索引值為負數或大於等於數組大小時會拋出。
2-2-5、NegativeArraySizeException:數組長度為負值異常。一般在初始化數組大小為負值時拋出。
2-2-6、ArrayStoreException:數群組類型不匹配值異常。例如將一個Object數組中加入一個Integer對象與一個String對象時,類型不符就會拋出。
2-2-7、IllegalArgumentException:非法參數異常。會在使用Java類庫方法時傳入參數值越界時拋出。
Java異常詳解