首頁 Java java教程 Java分類異常問題講解

Java分類異常問題講解

Jul 18, 2017 pm 05:50 PM
java 分類 例外

錯誤: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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP與Python:核心功能 PHP與Python:核心功能 Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

PHP:許多網站的基礎 PHP:許多網站的基礎 Apr 13, 2025 am 12:07 AM

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

See all articles