首頁  >  文章  >  Java  >  Java分類異常問題講解

Java分類異常問題講解

巴扎黑
巴扎黑原創
2017-07-18 17:50:501247瀏覽

錯誤:error,通常不需要程式設計師管理,一般指記憶體不足等。
異常:exception

依照執行的時機分為:
執行階段異常:RuntimeException:執行的時候才會出現的例外。
非運行時異常:

依照是否安全分為:
已檢查異常:檔案開啟異常,檔案操作異常,資料庫操作異常等
未檢查異常:程式設計師沒有仔細去驗證,導致出現的異常,下標越界異常,空指標異常,型別轉換異常。


處理方式:
兩種方式:try這一類的關鍵字處理
throw和throws關鍵字處理

原則:下層應該會將例外狀況拋出,表層去轉換成業務語言提醒使用者。


專案中異常的處理應該是針對使用者的。
業務異常:業務中出現的異常。

自訂例外:封裝業務異常以及出現異常的位置和異常的原因。

Java Exception:

1、Error 
2、Runtime Exception 執行階段例外
3、Exception 
4、throw 使用者自訂例外

#異常類別分兩大類型:Error類別代表了編譯和系統的錯誤,不允許捕獲;Exception類別代表了標準Java庫方法所激發的異常。 Exception類別也包含執行異常類別Runtime_Exception和非運作異常類別Non_RuntimeException這兩個直接的子類別。

執行異常類別對應於編譯錯誤,它是指Java程式在執行時產生的由解釋器引發的各種異常。運行異常可能出現在任何地方,且出現頻率很高,因此為了避免巨大的系統資源開銷,編譯器不會對異常進行檢查。所以Java語言中的運行異常不一定被捕獲。出現運作錯誤往往表示程式碼有錯誤,如:算數異常(如被0除)、下標異常(如陣列越界)等。

非執行異常時Non_RuntimeException類別及其子類別的實例,又稱為可偵測異常。 Java編譯器利用分析方法或構造方法中可能產生的結果來偵測Java程式中是否含有偵測異常的處理程序,對於每個可能的可偵測異常,方法或構造方法的throws子句必須列出該異常對應的類。在Java的標準套件java.lang java.util 和 java.net 中定義的異常都是非運作異常。

 

算術異常類別:ArithmeticExecption

空指標例外類別:NullPointerException

類型強制轉換例外:ClassCastException

#陣列負下標異常:NegativeArrayException

數組下標越界異常:ArrayIndexOutOfBoundsException

違反安全原則例外:SecturityException

檔案已結束異常:EOFException

##檔案未找到檔案未找到檔案未找到檔案未找到例外:FileNotFoundException

字串轉換為數字異常:NumberFormatException

操作資料庫異常:SQLException

##輸入輸出例外:IOException


#方法找不到例外:NoSuchMethodException


java.lang.AbstractMethodError

抽象方法錯誤。當應用程式試圖呼叫抽象方法時拋出。

java.lang.AssertionError

斷言錯誤。用來指示一個斷言失敗的情況。

java.lang.ClassCircularityError

類別循環依賴錯誤。在初始化一個類別時,若偵測到類別之間循環依賴則拋出該異常。

java.lang.ClassFormatError

類別格式錯誤。當Java虛擬機器試圖從一個檔案中讀取Java類,而偵測到該檔案的內容不符合類別的有效格式時拋出。

java.lang.Error

錯誤。是所有錯誤的基類,用於標識嚴重的程式運行問題。這些問題通常描述一些不應被應用程式捕獲的反常情況。

java.lang.ExceptionInInitializerError

初始化程式錯誤。當執行一個類別的靜態初始化程序的過程中,發生了異常時拋出。靜態初始化程序是指直接包含於類別中的static語句段。

java.lang.IllegalAccessError

「違法存取錯誤。當一個應用程式試圖存取、修改某個類別的域(Field)或呼叫其方法,但是又違反域或方法的可見性聲明,則拋出該異常。

java.lang.IncompatibleClassChangeError

不相容的類別變更錯誤。當正在執行的方法所依賴的類別定義發生了不相容的改變時,拋出該異常。一般在修改了應用程式中的某些類別的聲明定義而沒有對整個應用重新編譯而直接運行的情況下,容易引發該錯誤。

java.lang.InstantiationError

實例化錯誤。當一個應用程式試圖透過Java的new運算子建構一個抽象類別或介面時拋出該例外.

java.lang.InternalError

內部錯誤。用來指示Java虛擬機器發生了內部錯誤。

java.lang.LinkageError

連結錯誤。這個錯誤及其所有子類指示某個類依賴於另外一些類,在該類編譯之後,被依賴的類改變了其類定義而沒有重新編譯所有的類,進而引發錯誤的情況。

java.lang.NoClassDefFoundError

未找到類別定義錯誤。當Java虛擬機器或類別裝載器試圖實例化某個類,而找不到該類別的定義時拋出該錯誤。

java.lang.NoSuchFieldError

域不存在錯誤。當應用程式試圖存取或修改某類別的某個域,而該類別的定義中沒有該域的定義時拋出該錯誤。

java.lang.NoSuchMethodError

方法不存在錯誤。當應用程式試圖呼叫某一類別的某個方法,而該類別的定義中沒有該方法的定義時拋出該錯誤。

java.lang.OutOfMemoryError

記憶體不足錯誤。當可用記憶體不足以讓Java虛擬機器分配給一個物件時拋出該錯誤。

java.lang.StackOverflowError

堆疊溢位錯誤。當一個應用遞歸呼叫的層次太深而導致堆疊溢位時拋出該錯誤。

java.lang.ThreadDeath

線程結束。當呼叫Thread類別的stop方法時拋出該錯誤,用於指示執行緒結束。

java.lang.UnknownError

未知錯誤。用來指示Java虛擬機器發生了未知嚴重錯誤的情況。

java.lang.UnsatisfiedLinkError

未滿足的連結錯誤。當Java虛擬機未找到某個類別的宣告為native方法的本機語言定義時拋出。

java.lang.UnsupportedClassVersionError

不支援的類別版本錯誤。當Java虛擬機試圖從讀取某個類別文件,但發現該文件的主、次版本號不被目前Java虛擬機支援的時候,拋出該錯誤。

java.lang.VerifyError

驗證錯誤。當驗證器偵測到某個類別檔案中存在內部不相容或安全問題時拋出該錯誤。

java.lang.VirtualMachineError

虛擬機器錯誤。用於指示虛擬機器被破壞或繼續執行操作所需的資源不足的情況。


java.lang.ArithmeticException

算術條件異常。譬如:整數除零等。

java.lang.ArrayIndexOutOfBoundsException

陣列索引越界異常。當數組的索引值為負數或大於等於數組大小時拋出。

java.lang.ArrayStoreException

陣列儲存異常。當向數組中存放非數組聲明類型物件時拋出。

java.lang.ClassCastException

類別造型異常。假設有類別A和B(A不是B的父類別或子類別),O是A的實例,那麼當強制將O建構為類別B的實例時拋出該異常。該異常經常被稱為強制類型轉換異常。

java.lang.ClassNotFoundException

找不到類別異常。當應用程式試圖根據字串形式的類別名稱構造類,而在遍歷CLASSPAH之後找不到對應名稱的class檔案時,拋出該異常。

java.lang.CloneNotSupportedException

不支援克隆異常。當沒有實作Cloneable介面或不支援克隆方法時,呼叫其clone()方法則拋出該異常。

java.lang.EnumConstantNotPresentException

枚舉常數不存在例外。當應用程式試圖透過名稱和枚舉類型存取一個枚舉對象,但該枚舉對象並不包含常數時,請拋出該異常。

java.lang.Exception

根異常。用來描述應用程式希望捕獲的情況。

java.lang.IllegalAccessException

違法的存取例外。當應用程式試圖透過反射方式建立某個類別的實例、存取該類別屬性、呼叫該類別方法,而當時又無法存取類別的、屬性的、方法的或建構方法的定義時拋出該異常。

java.lang.IllegalMonitorStateException

違法的監控狀態異常。當某個執行緒試圖等待一個自己並不擁有的物件(O)的監控器或通知其他執行緒等待該物件(O)的監控器時,拋出該異常。

java.lang.IllegalStateException

違法的狀態異常。當在Java環境和應用程式尚未處於某個方法的合法呼叫狀態,而呼叫了該方法時,拋出該異常。

java.lang.IllegalThreadStateException

違法的執行緒狀態異常。當縣城尚未處於某個方法的合法呼叫狀態,而呼叫了該方法時,拋出異常。

java.lang.IndexOutOfBoundsException

索引越界異常。當存取某個序列的索引值小於0或大於等於序列大小時,拋出該異常。

java.lang.InstantiationException

實例化異常。當試圖透過newInstance()方法建立某個類別的實例,而該類別是抽象類別或介面時,拋出該異常。

java.lang.InterruptedException

被中止異常。當某個執行緒處於長時間的等待、休眠或其他暫停狀態,而此時其他的執行緒透過Thread的interrupt方法終止該執行緒時拋出該例外。

java.lang.NegativeArraySizeException

陣列大小為負值異常。當使用負數大小值建立數組時拋出該異常。

java.lang.NoSuchFieldException

屬性不存在異常。當存取某個類別的不存在的屬性時拋出該異常。

java.lang.NoSuchMethodException

方法不存在異常。當存取某個類別的不存在的方法時拋出該異常。

java.lang.NullPointerException

空指標異常。當應用程式試圖在要求使用物件的地方使用了null時,拋出該異常。譬如:呼叫null物件的實例方法、存取null物件的屬性、計算null物件的長度、使用throw語句拋出null等等。

java.lang.NumberFormatException

數位格式異常。當試圖將一個String轉換為指定的數字類型,而該字串確不符合數字類型要求的格式時,請拋出該異常。

java.lang.RuntimeException

執行階段異常。是所有Java虛擬機器正常操作期間可以被拋出的異常的父類別。

java.lang.SecurityException

安全性異常。由安全管理器拋出,用於指示違反安全狀況的異常。

java.lang.StringIndexOutOfBoundsException

字串索引越界異常。當使用索引值存取某個字串中的字符,而該索引值小於0或大於等於序列大小時,請拋出該異常。

java.lang.TypeNotPresentException

類型不存在異常。當應用程式試圖以某個類型名稱的字串表達方式存取該類型,但根據給定的名稱找不到該類型是拋出該異常。此異常與ClassNotFoundException的差異在於該異常是unchecked(不被檢查)異常,而ClassNotFoundException是checked(被檢查)異常。

java.lang.UnsupportedOperationException

不支援的方法異常。指明請求的方法不被支持情況的異常。

異常
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是你的action名字)

可能原因
action沒有再struts- config.xml 中定義,或沒有找到符合的action,例如在JSP檔案中使用


以上是Java分類異常問題講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn