程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java入門筆記5_異常

Java入門筆記5_異常

編輯:關於JAVA

1. 異常/錯誤

1.1 異常處理的基本結構

異常處理的基本結構如下:

try {

someReallyExceptionalMethod();

} catch (NullPointerException n) { // a subclass of RuntimeException

. . .

} catch (RuntimeException r) { // a subclass of Exception

. . .

} catch (IOException i) { // a subclass of Exception

. . .

} catch (MyFirstException m) { // our subclass of Exception

. . .

} catch (Exception e) { // a subclass of Throwable

. . .

} catch (Throwable t) {

. . . // Errors, plus anything not caught above are caught here

} finally {…}

Java中異常和錯誤類都是從Throwable類中繼承下來的,即Throwable類有兩個子類:Error類及Exception類,Error類的實例是Java運行環境的內部錯誤,這些錯誤都是非常少及非常致命的,我們不能或者很少能對這些錯誤作出處理,或者捕獲這些錯誤。

而Exception類可以分為二類,一種是運行時exceptions(Runtime exceptions)如SecurityException,ArrayIndexOutofBounds,NullPointerException等;另一種是除此之外的,如EOFException等。在Exception類層次結構上,越是上層的Exception類,就越具有一般性,而越下面的Exception就越具有針對性。在多數Exception類是Java.lang包中的一部分,其它一些存在於其它的包中。

一般來說在將可能出錯的代碼放入try塊中,而在catch中捕獲可能的錯誤,一般從具體的錯誤開始,一直Throwable,而在finally中入些錯誤是否發生都需處理的代碼,如退出循環,釋放資源等。

1.2 聲明可能產生異常的方法

在聲明方法時可以加上關鍵字throws,用以說明該方法可能產生某個或者某些異常,如:

public boolean myOtherMethod (int x, int y)

throws AnException, AnotherExeption, AThirdException {

...}

有了這樣的聲明後,其它使用該方法的地方最好使用try…catch來處理該方法指定的異常。

1.3 創建自己的異常類

自己定義的異常類應從其它的異常類中繼承下來,最好找一個接近的異常類來繼承,如定義文件格式錯誤的異常類,最好從IOException繼承。如果找不到接近的異常類繼承,那麼就直接從Exception類繼承,因為它是所有異常類的鼻祖,以下是一個簡單的自定義異常類:

class MyException extends Exception {

public MyException() {}

public MyException(String msg) {

super(msg);

}

}

說明:

(1) 異常類一般會有二個構造函數,一個帶參數,一個帶String類型的參數;

(2) 當然可以再定義其它的構造函數及自己的變量及方法成員,如可以在類中定義方法用於記錄log;

以下是對該異常類的引用:

public static void g() throws MyException {

System.out.println("Throwing MyException from g()");

throw new MyException("Originated in g()");

}

說明:

(3) 在方法定義後引用異常類,可以直接將該類名放在throws後;

(4) 可以使用throw new MyException來拋出自定義異常的實例;

1.4 其它

(1) 如果使用帶有throw定義的方法,應將它放入try…catch中,處理指定異常後,重新將該異常拋出,即向上傳遞;

(2) 對於一些可預測的可解決的異常最好直接在程序中處理掉,而不要拋出異常;

使用異常會占用大量的運行時間,所以盡量少用;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved