【java】java異常處理

來源:互聯網
上載者:User

Java把異常當作對象來處理,並定義一個基類java.lang.Throwable作為所有異常的超類。

Throwable類是所有異常和錯誤的超類,有兩個子類Error和Exception,分別表示錯誤和異常。其中異常類Exception又分為運行時異常(RuntimeException)和非運行時異常,也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。

Error是程式無法處理的錯誤,比如OutOfMemoryError、ThreadDeath等。這些異常發生時,Java虛擬機器(JVM)一般會選擇線程終止。
Exception是程式本身可以處理的異常,這種異常分兩大類: 運行時異常和非運行時異常。程式中應當儘可能去處理這些異常。
運行時異常是RuntimeException類及其子類,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程式中可以選擇捕獲處理,也可以不處理,如果不處理也不需要在方法定義中使用throws。這些異常一般是由程式邏輯錯誤引起的,我們應該在編程時避免這種異常的發生。
非運行時異常是RuntimeException以外的異常,類型上都屬於Exception類及其子類。從程式文法角度講是必須進行處理的異常,如果不處理,程式就不能編譯通過。如IOException、SQLException等以及使用者自訂的異常。

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類型的異常。如果拋出了檢查異常,則還應該在方法頭部用throws聲明方法可能拋出的異常類型。該方法的調用者也必須檢查處理拋出的異常。如果所有方法都層層上拋擷取的異常,最終JVM會進行處理,處理也很簡單,就是列印異常訊息和堆棧資訊。如果拋出的是Error或RuntimeException,則該方法的調用者可選擇處理該異常。
throws關鍵字用於方法體外部的方法聲明部分,用來聲明方法可能會拋出某些異常。僅當拋出了檢查異常,該方法的調用者才必須處理或者重新拋出該異常。當方法的調用者無力處理該異常的時候,應該繼續拋出,而不是囫圇吞棗一般在catch塊中列印一下堆棧資訊做個勉強處理。

對於檢查異常,如果不能行之有效處理,可以轉換為RuntimeException重新拋出。這樣也讓上層的代碼有選擇的餘地――可處理也可不處理。-----------java編程思想裡推薦的方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.