摘要:異常類有兩個主要的子類類和類。當不支持請求的操作時,拋出該異常。此異常由方法拋出,指示索引或者為負,或者超出字符串的大小。線程沒有處于請求操作所要求的適當狀態時拋出的異常。用非法索引訪問數組時拋出的異常。返回一個對象代表異常原因。
異常的定義
異常發生的原因有很多,比如:用戶輸入了非法數據,要打開的文件不存在,或者JVM內存溢出等。
異常又分為檢查性異常,這類異常再編譯時不能被忽略;運行時異常,這類異常往往是在編譯前無法預料的。
Exception類和Error繼承于Throwable類。
所有的異常類是從java.lang.Exception類繼承的子類。
異常類有兩個主要的子類:IOException類和RuntimeException類。
java.lang包中定義了一些異常類。
運行時異常類:
ArithmeticException:當出現異常的運算條件時,拋出此異常。例如,一個整數"除以零"時,拋出此類的一個實例。
UnsupportedOperationException:當不支持請求的操作時,拋出該異常。
StringIndexOutOfBoundsException:此異常由 String 方法拋出,指示索引或者為負,或者超出字符串的大小。
NumberFormatException: 當應用程序試圖將字符串轉換成一種數值類型,但該字符串不能轉換為適當格式時,拋出該異常。
NullPointerException:當應用程序試圖在需要對象的地方使用 null 時,拋出該異常。
IndexOutOfBoundsException:指示某排序索引(例如對數組、字符串或向量的排序)超出范圍時拋出。
IllegalThreadStateException:線程沒有處于請求操作所要求的適當狀態時拋出的異常。
IllegalStateException:在非法或不適當的時間調用方法時產生的信號。
ArrayIndexOutOfBoundsException:用非法索引訪問數組時拋出的異常。如果索引為負或大于等于數組大小,則該索引為非法索引。
檢查性異常類:
ClassNotFoundException:應用程序試圖加載類時,找不到相應的類,拋出該異常。
IllegalAccessException:拒絕訪問一個類的時候,拋出該異常。
InterruptedException:一個線程被另一個線程中斷,拋出該異常。
NoSuchMethodException:請求的方法不存在。
NoSuchFieldException:請求的變量不存在。
InstantiationException:當試圖使用 Class 類中的 newInstance 方法創建一個類的實例,而指定的類對象因為是一個接口或是一個抽象類而無法實例化時,拋出該異常。
CloneNotSupportedException:當調用 Object 類中的 clone 方法克隆對象,但該對象的類無法實現 Cloneable 接口時,拋出該異常。
public String getMessage():返回關于發生的異常的詳細信息。
public Throwable getCause():返回一個Throwable 對象代表異常原因。
public String toString():使用getMessage()的結果返回類的串級名字。
public Throwable fillInStackTrace():用當前的調用棧層次填充Throwable 對象棧層次,添加到棧層次任何先前信息中。
public void printStackTrace():打印toString()結果和棧層次到System.err,即錯誤輸出流。
使用try和catch關鍵字可以捕獲異常,try/catch的語法如下:
try { // 程序代碼 } catch(ExceptionName e1) { //Catch 塊 }
Catch語句包含要捕獲異常類型的聲明。當保護代碼塊中發生一個異常時,try后面的catch塊就會被檢查。
如果發生的異常包含在catch塊中,異常會被傳遞到該catch塊,這和傳遞一個參數到方法是一樣。
多重異常捕獲
一個try代碼塊后面跟隨多個catch代碼塊:
try { // 程序代碼 } catch(異常類型1 異常的變量名1) { // 程序代碼 } catch(異常類型2 異常的變量名2) { // 程序代碼 } catch(異常類型3 異常的變量名3) { // 程序代碼 }
可以在ry語句后面添加任意數量的catch塊,如果保護代碼中發生異常,異常被拋給第一個catch塊。如果拋出異常的數據類型與ExceptionType1匹配,它在這里就會被捕獲,如果不匹配,它會被傳遞給第二個catch塊,直到異常被捕獲或者通過所有的catch塊。
finally關鍵字
finally關鍵字用來創建在try代碼塊后面執行的代碼塊,無論是否發生異常,finally代碼塊中的代碼總會被執行。
try { // 程序代碼 } catch(異常類型 異常的變量名) { // 程序代碼 } finally { // 程序代碼 }throws/throw關鍵字
如果一個方法沒有捕獲一個檢查性異常,那么該方法必須使用throws 關鍵字來聲明,也可以使用throw關鍵字拋出一個異常,無論它是新實例化的還是剛捕獲到的。
public class className { public void deposit(double amount) throws RemoteException { // Method implementation throw new RemoteException(); } //Remainder of class definition }聲明自定義異常
所有異常都必須是Throwable的子類:
如果希望寫一個檢查性異常類,則需要繼承Exception類。
如果你想寫一個運行時異常類,那么需要繼承RuntimeException 類。
class MyException extends Exception{ private double count; public MyException (double count) { this.count= count; } public double getCount() { return count; } }
一個異常類和其它任何類一樣,包含有變量和方法。
使用異常
public class CheckingAccount { private double balance; private int number; public CheckingAccount(int number) { this.number = number; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) throws MyException { if(amount <= balance) { balance -= amount; } else { double needs = amount - balance; throw new MyException(needs); } } public double getBalance() { return balance; } public int getNumber() { return number; } }
調用該類方法時候使用try/catch語句就行了。
try { withdraw(600.00); } catch (MyException e) { System.out.println("Sorry, but you are short $"+ e.getAmount()); e.printStackTrace(); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70166.html
摘要:不受檢查異常為編譯器不要求強制處理的異常,檢查異常則是編譯器要求必須處置的異常。潛在的異常處理器是異常發生時依次存留在調用棧中的方法的集合。當運行時系統遍歷調用棧而未找到合適的異常處理器,則運行時系統終止。異常處理涉及到五個關鍵字,分別是。 概念 程序運行時,發生的不被期望的事件,它阻止了程序按照程序員的預期正常執行,這就是異常。 異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并...
摘要:異常也就是指程序運行時發生錯誤,而異常處理就是對這些錯誤進行處理和控制。有兩個重要的子類異常和錯誤,二者都是異常處理的重要子類,各自都包含大量子類。需要注意的是,一旦某個捕獲到匹配的異常類型,將進入異常處理代碼。 1,異常現象 程序錯誤分為三種:1,編譯錯誤;2,運行時錯誤;3,邏輯錯誤。 編譯錯誤是因為程序沒有遵循語法規則,編譯程序能夠自己發現并且提示我們錯誤的原因和位置,這...
摘要:根據異常對象判斷是否存在異常處理。否則,范圍小的異常會因異常處理完成而無法處理。異常處理中使用作為異常的統一出口。 參考《第一行代碼java》《java程序設計教程》java中程序的錯誤有語法錯誤、語義錯誤。如果是語法性錯誤,在編譯時就可以檢查出來并解決。語義錯誤是在程序運行時出現的,在編譯時沒有錯誤,但在運行時可能會出現錯誤導致程序退出,這些錯誤稱為異常。在沒有異常處理的情況下,也即...
摘要:為可恢復的錯誤使用檢查型異常,為編程錯誤使用非檢查型錯誤。檢查型異常保證你對錯誤條件提供異常處理代碼,這是一種從語言到強制你編寫健壯的代碼的一種方式,但同時會引入大量雜亂的代碼并導致其不可讀。在編程中選擇檢查型異常還是運行時異常。 異常處理是Java 開發中的一個重要部分。它是關乎每個應用的一個非功能性需求,是為了處理任何錯誤狀況,比如資源不可訪問,非法輸入,空輸入等等。Java提供了...
閱讀 3234·2021-11-18 10:02
閱讀 1936·2021-09-22 10:54
閱讀 2989·2019-08-30 15:43
閱讀 2576·2019-08-30 13:22
閱讀 1575·2019-08-29 13:57
閱讀 1041·2019-08-29 13:27
閱讀 731·2019-08-26 14:05
閱讀 2512·2019-08-26 13:30