<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-71  評論-4  文章-0  trackbacks-0
    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) 對于一些可預測的可解決的異常最好直接在程序中處理掉,而不要拋出異常;

    使用異常會占用大量的運行時間,所以盡量少用;
    posted on 2006-03-20 12:17 zjw_albert 閱讀(112) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 老司机午夜精品视频在线观看免费 | 亚洲一区二区视频在线观看| 亚洲人成777在线播放| 午夜亚洲av永久无码精品| 在线观看午夜亚洲一区| 国产精品成人69XXX免费视频| 国产一级一片免费播放| 国产成人亚洲综合在线| 在线观看免费视频资源| 亚洲国产人成网站在线电影动漫| 免费看又黄又无码的网站| 亚洲网站在线免费观看| 美女裸身网站免费看免费网站| 色老板亚洲视频免在线观| 狠狠久久永久免费观看| 色费女人18女人毛片免费视频| 亚洲欧洲日产国码高潮αv| 99re8这里有精品热视频免费| 国产AV无码专区亚洲AV毛网站 | 国产免费丝袜调教视频| 久久狠狠爱亚洲综合影院| 成人毛片18女人毛片免费视频未| 丰满亚洲大尺度无码无码专线| 国产大片91精品免费看3| 一级黄色片免费观看| 国产AV无码专区亚洲AV毛网站| 波多野结衣免费在线| 亚洲aⅴ无码专区在线观看| 亚洲国产精品自产在线播放| 女人隐私秘视频黄www免费| 亚洲黄色在线视频| 青青操免费在线观看| 亚洲av无码片在线观看| 国产免费午夜a无码v视频| 青青操在线免费观看| 2020亚洲男人天堂精品| 亚洲免费日韩无码系列| 亚洲最大免费视频网| 色屁屁在线观看视频免费| 亚洲AV本道一区二区三区四区| 最近中文字幕无免费视频|