成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java異常處理

kid143 / 2096人閱讀

摘要:異常類有兩個主要的子類類和類。當(dāng)不支持請求的操作時(shí),拋出該異常。此異常由方法拋出,指示索引或者為負(fù),或者超出字符串的大小。線程沒有處于請求操作所要求的適當(dāng)狀態(tài)時(shí)拋出的異常。用非法索引訪問數(shù)組時(shí)拋出的異常。返回一個對象代表異常原因。

異常的定義

異常發(fā)生的原因有很多,比如:用戶輸入了非法數(shù)據(jù),要打開的文件不存在,或者JVM內(nèi)存溢出等。
異常又分為檢查性異常,這類異常再編譯時(shí)不能被忽略;運(yùn)行時(shí)異常,這類異常往往是在編譯前無法預(yù)料的。

Exception類結(jié)構(gòu)

Exception類和Error繼承于Throwable類。
所有的異常類是從java.lang.Exception類繼承的子類。
異常類有兩個主要的子類:IOException類和RuntimeException類。

Java 內(nèi)置異常類

java.lang包中定義了一些異常類。
運(yùn)行時(shí)異常類
ArithmeticException:當(dāng)出現(xiàn)異常的運(yùn)算條件時(shí),拋出此異常。例如,一個整數(shù)"除以零"時(shí),拋出此類的一個實(shí)例。
UnsupportedOperationException:當(dāng)不支持請求的操作時(shí),拋出該異常。
StringIndexOutOfBoundsException:此異常由 String 方法拋出,指示索引或者為負(fù),或者超出字符串的大小。
NumberFormatException: 當(dāng)應(yīng)用程序試圖將字符串轉(zhuǎn)換成一種數(shù)值類型,但該字符串不能轉(zhuǎn)換為適當(dāng)格式時(shí),拋出該異常。
NullPointerException:當(dāng)應(yīng)用程序試圖在需要對象的地方使用 null 時(shí),拋出該異常。
IndexOutOfBoundsException:指示某排序索引(例如對數(shù)組、字符串或向量的排序)超出范圍時(shí)拋出。
IllegalThreadStateException:線程沒有處于請求操作所要求的適當(dāng)狀態(tài)時(shí)拋出的異常。
IllegalStateException:在非法或不適當(dāng)?shù)臅r(shí)間調(diào)用方法時(shí)產(chǎn)生的信號。
ArrayIndexOutOfBoundsException:用非法索引訪問數(shù)組時(shí)拋出的異常。如果索引為負(fù)或大于等于數(shù)組大小,則該索引為非法索引。
檢查性異常類
ClassNotFoundException:應(yīng)用程序試圖加載類時(shí),找不到相應(yīng)的類,拋出該異常。
IllegalAccessException:拒絕訪問一個類的時(shí)候,拋出該異常。
InterruptedException:一個線程被另一個線程中斷,拋出該異常。
NoSuchMethodException:請求的方法不存在。
NoSuchFieldException:請求的變量不存在。
InstantiationException:當(dāng)試圖使用 Class 類中的 newInstance 方法創(chuàng)建一個類的實(shí)例,而指定的類對象因?yàn)槭且粋€接口或是一個抽象類而無法實(shí)例化時(shí),拋出該異常。
CloneNotSupportedException:當(dāng)調(diào)用 Object 類中的 clone 方法克隆對象,但該對象的類無法實(shí)現(xiàn) Cloneable 接口時(shí),拋出該異常。

Throwable類主要方法

public String getMessage():返回關(guān)于發(fā)生的異常的詳細(xì)信息。
public Throwable getCause():返回一個Throwable 對象代表異常原因。
public String toString():使用getMessage()的結(jié)果返回類的串級名字。
public Throwable fillInStackTrace():用當(dāng)前的調(diào)用棧層次填充Throwable 對象棧層次,添加到棧層次任何先前信息中。
public void printStackTrace():打印toString()結(jié)果和棧層次到System.err,即錯誤輸出流。

捕獲異常

使用try和catch關(guān)鍵字可以捕獲異常,try/catch的語法如下:

try {
   // 程序代碼
} catch(ExceptionName e1) {
   //Catch 塊
}

Catch語句包含要捕獲異常類型的聲明。當(dāng)保護(hù)代碼塊中發(fā)生一個異常時(shí),try后面的catch塊就會被檢查。
如果發(fā)生的異常包含在catch塊中,異常會被傳遞到該catch塊,這和傳遞一個參數(shù)到方法是一樣。

多重異常捕獲
一個try代碼塊后面跟隨多個catch代碼塊:

try {
    // 程序代碼
 } catch(異常類型1 異常的變量名1) {
    // 程序代碼
 } catch(異常類型2 異常的變量名2) {
    // 程序代碼
 } catch(異常類型3 異常的變量名3) {
    // 程序代碼
 }

可以在ry語句后面添加任意數(shù)量的catch塊,如果保護(hù)代碼中發(fā)生異常,異常被拋給第一個catch塊。如果拋出異常的數(shù)據(jù)類型與ExceptionType1匹配,它在這里就會被捕獲,如果不匹配,它會被傳遞給第二個catch塊,直到異常被捕獲或者通過所有的catch塊。

finally關(guān)鍵字
finally關(guān)鍵字用來創(chuàng)建在try代碼塊后面執(zhí)行的代碼塊,無論是否發(fā)生異常,finally代碼塊中的代碼總會被執(zhí)行。

try {
    // 程序代碼
 } catch(異常類型 異常的變量名) {
    // 程序代碼
 } finally {
    // 程序代碼
 }
throws/throw關(guān)鍵字

如果一個方法沒有捕獲一個檢查性異常,那么該方法必須使用throws 關(guān)鍵字來聲明,也可以使用throw關(guān)鍵字拋出一個異常,無論它是新實(shí)例化的還是剛捕獲到的。

public class className
{
   public void deposit(double amount) throws RemoteException
   {
      // Method implementation
      throw new RemoteException();
   }
   //Remainder of class definition
}
聲明自定義異常

所有異常都必須是Throwable的子類:

如果希望寫一個檢查性異常類,則需要繼承Exception類。

如果你想寫一個運(yùn)行時(shí)異常類,那么需要繼承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;    
   } 
}

調(diào)用該類方法時(shí)候使用try/catch語句就行了。

try {
     withdraw(600.00);
} catch (MyException e) {
     System.out.println("Sorry, but you are short $"+ e.getAmount());
     e.printStackTrace();
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70166.html

相關(guān)文章

  • 16.java異常處理

    摘要:不受檢查異常為編譯器不要求強(qiáng)制處理的異常,檢查異常則是編譯器要求必須處置的異常。潛在的異常處理器是異常發(fā)生時(shí)依次存留在調(diào)用棧中的方法的集合。當(dāng)運(yùn)行時(shí)系統(tǒng)遍歷調(diào)用棧而未找到合適的異常處理器,則運(yùn)行時(shí)系統(tǒng)終止。異常處理涉及到五個關(guān)鍵字,分別是。 概念 程序運(yùn)行時(shí),發(fā)生的不被期望的事件,它阻止了程序按照程序員的預(yù)期正常執(zhí)行,這就是異常。 異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并...

    asce1885 評論0 收藏0
  • Java異常處理

    摘要:異常也就是指程序運(yùn)行時(shí)發(fā)生錯誤,而異常處理就是對這些錯誤進(jìn)行處理和控制。有兩個重要的子類異常和錯誤,二者都是異常處理的重要子類,各自都包含大量子類。需要注意的是,一旦某個捕獲到匹配的異常類型,將進(jìn)入異常處理代碼。 1,異?,F(xiàn)象 程序錯誤分為三種:1,編譯錯誤;2,運(yùn)行時(shí)錯誤;3,邏輯錯誤。 編譯錯誤是因?yàn)槌绦驔]有遵循語法規(guī)則,編譯程序能夠自己發(fā)現(xiàn)并且提示我們錯誤的原因和位置,這...

    CarlBenjamin 評論0 收藏0
  • Java異常處理

    摘要:可以被異常處理機(jī)制使用,是異常處理的核心。非檢測異常,在編譯時(shí),不會提示和發(fā)現(xiàn)異常的存在,不強(qiáng)制要求程序員處理這樣的異常。總體來說,語言的異常處理流程,從程序中獲取異常信息。處理運(yùn)行時(shí)異常,采用邏輯合理規(guī)避同時(shí)輔助處理。 目錄 什么是Java異常? 當(dāng)一個Exception在程序中發(fā)生的時(shí)候,JVM是怎么做的呢? 當(dāng)我們編寫程序的時(shí)候如何對待可能出現(xiàn)的異常呢? 正文 1. 什么是J...

    Fourierr 評論0 收藏0
  • Java 異常處理

    摘要:下面是異常處理機(jī)制的語法結(jié)構(gòu)業(yè)務(wù)實(shí)現(xiàn)代碼輸入不合法如果執(zhí)行塊里業(yè)務(wù)邏輯代碼時(shí)出現(xiàn)異常,系統(tǒng)自動生成一個異常對象,該對象被提交給運(yùn)行時(shí)環(huán)境,這個過程被稱為拋出異常。 Java的異常機(jī)制主要依賴于try、catch、finally、throw和throws五個關(guān)鍵字, try關(guān)鍵字后緊跟一個花括號括起來的代碼塊(花括號不可省略),簡稱try塊,它里面放置可能引發(fā)異常的代碼 catch后對...

    senntyou 評論0 收藏0
  • java異常處理機(jī)制的理解

    摘要:根據(jù)異常對象判斷是否存在異常處理。否則,范圍小的異常會因異常處理完成而無法處理。異常處理中使用作為異常的統(tǒng)一出口。 參考《第一行代碼java》《java程序設(shè)計(jì)教程》java中程序的錯誤有語法錯誤、語義錯誤。如果是語法性錯誤,在編譯時(shí)就可以檢查出來并解決。語義錯誤是在程序運(yùn)行時(shí)出現(xiàn)的,在編譯時(shí)沒有錯誤,但在運(yùn)行時(shí)可能會出現(xiàn)錯誤導(dǎo)致程序退出,這些錯誤稱為異常。在沒有異常處理的情況下,也即...

    khs1994 評論0 收藏0
  • Java異常處理 10 個最佳實(shí)踐

    摘要:為可恢復(fù)的錯誤使用檢查型異常,為編程錯誤使用非檢查型錯誤。檢查型異常保證你對錯誤條件提供異常處理代碼,這是一種從語言到強(qiáng)制你編寫健壯的代碼的一種方式,但同時(shí)會引入大量雜亂的代碼并導(dǎo)致其不可讀。在編程中選擇檢查型異常還是運(yùn)行時(shí)異常。 異常處理是Java 開發(fā)中的一個重要部分。它是關(guān)乎每個應(yīng)用的一個非功能性需求,是為了處理任何錯誤狀況,比如資源不可訪問,非法輸入,空輸入等等。Java提供了...

    Forelax 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<