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

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

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

    隨筆-19  評論-5  文章-3  trackbacks-0
    一、異常的概念和Java異常體系結構
    Java把異常當作對象來處理,并定義一個基類java.lang.Throwable作為所有異常的超類。在Java API中已經定義了許多異常類,這些異常類分為兩大類,錯誤Error和異常Exception。
    Thorwable類所有異常和錯誤的超類,有兩個子類Error和Exception,分別表示錯誤和異常。其中異常類Exception又分為運行時異常(RuntimeException)和非運行時異常,也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。
    Error是程序無法處理的錯誤,比如OutOfMemoryError、ThreadDeath等。這些異常發生時,Java虛擬機(JVM)一般會選擇線程終止。
    Exception是程序本身可以處理的異常,這種異常分兩大類運行時異常和非運行時異常。程序中應當盡可能去處理這些異常。
    運行時異常都是RuntimeException類及其子類異常,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。
    非運行時異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語法角度講是必須進行處理的異常,如果不處理,程序就不能編譯通過。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不自定義檢查異常。

    二、異常的捕獲和處理
    Java異常的捕獲和處理是一個不容易把握的事情,如果處理不當,不但會讓程序代碼的可讀性大大降低,而且導致系統性能低下,甚至引發一些難以發現的錯誤。
    Java異常處理涉及到五個關鍵字,分別是:try、catch、finally、throw、throws。

    try、catch、finally三個語句塊應注意的問題
    1>try、catch、finally三個語句塊均不能單獨使用,三者可以組成 try...catch...finally、try...catch、try...finally三種結構,catch語句可以有一個或多個,finally語句最多一個。
    2>try、catch、finally三個代碼塊中變量的作用域為代碼塊內部,分別獨立而不能相互訪問。如果要在三個塊中都可以訪問,則需要將變量定義到這些塊的外面。
    3>多個catch塊時候,只會匹配其中一個異常類并執行catch塊代碼,而不會再執行別的catch塊,并且匹配catch語句的順序是由上到下。
    throw、throws關鍵字
    throw關鍵字是用于方法體內部,用來拋出一個Throwable類型的異常。如果拋出了檢查異常,則還應該在方法頭部聲明方法可能拋出的異常類型。該方法的調用者也必須檢查處理拋出的異常。如果所有方法都層層上拋獲取的異常,最終JVM會進行處理,處理也很簡單,就是打印異常消息和堆棧信息。如果拋出的是Error或RuntimeException,則該方法的調用者可選擇處理該異常。
    throws關鍵字用于方法體外部的方法聲明部分,用來聲明方法可能會拋出某些異常。僅當拋出了檢查異常,該方法的調用者才必須處理或者重新拋出該異常。當方法的調用者無力處理該異常的時候,應該繼續拋出,而不是囫圇吞棗一般在catch塊中打印一下堆棧信息做個勉強處理。

    三、 異常處理的一般原則
    1>
    能處理就早處理,拋出不去還不能處理的就想法消化掉或者轉換為RuntimeException處理。因為對于一個應用系統來說,拋出大量異常是有問題的,應該從程序開發角度盡可能的控制異常發生的可能。
    2>對于檢查異常,如果不能行之有效的處理,還不如轉換為RuntimeException拋出。這樣也讓上層的代碼有選擇的余地――可處理也可不處理。
    3>對于一個應用系統來說,應該有自己的一套異常處理框架,這樣當異常發生時,也能得到統一的處理風格,將優雅的異常信息反饋給用戶。



    天天學習,好好向上——

    posted on 2008-10-09 11:10 東頭bing阿頭 閱讀(2735) 評論(0)  編輯  收藏 所屬分類: Java EE

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


    網站導航:
     



    主站蜘蛛池模板: 在线观看亚洲AV日韩AV| 亚洲va久久久噜噜噜久久天堂| 亚洲精品免费在线| 久久免费福利视频| 久久精品国产96精品亚洲| 黄色网站软件app在线观看免费| 亚洲一区二区三区影院| 青青操免费在线观看| 亚洲av综合avav中文| 无码日韩精品一区二区免费暖暖| 亚洲AV无码久久精品成人 | 50岁老女人的毛片免费观看| 亚洲av日韩av高潮潮喷无码| 亚洲视频免费在线观看| 亚洲成a人片毛片在线| 国产精品69白浆在线观看免费| 亚洲精品一二三区| 国产一级一片免费播放i| 免费无码国产在线观国内自拍中文字幕 | 亚洲人成网站在线观看青青| 丰满少妇作爱视频免费观看| 久久久久久久尹人综合网亚洲| 久久久久免费看成人影片| 亚洲精品伊人久久久久| 国产成人免费网站在线观看| 九九99热免费最新版| 亚洲av综合avav中文| 97无码免费人妻超级碰碰夜夜| 国产大陆亚洲精品国产| 亚洲人成网7777777国产| 最好看最新的中文字幕免费| 亚洲AV无码AV男人的天堂不卡| 亚洲一区二区三区在线播放| 无码人妻丰满熟妇区免费| 亚洲av午夜精品无码专区| 免费一看一级毛片全播放| 久久久高清日本道免费观看| 精品丝袜国产自在线拍亚洲| 亚洲日韩涩涩成人午夜私人影院| 99久久久国产精品免费牛牛四川| 亚洲gay片在线gv网站|