程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Java異常處理及與C++的比較--異常分類.檢驗異常.非檢驗異常.常見異常

Java異常處理及與C++的比較--異常分類.檢驗異常.非檢驗異常.常見異常

編輯:C++入門知識

Java和C++一樣,也有一些關鍵字用於處理異常。   注:以下2個示例只是為了盡可能把所有關鍵字都使用到,為了介紹關鍵字的使用位置,並不推薦以下做法。               C++中異常處理的關鍵字有:try.catch.throw,基本用法示例:     [cpp]  try   {       throw E;   }   catch (E e)   {          }   catch (...)   {   }     try { throw E; } catch (E e) {   } catch (...) { } throw E拋出自己定義的異常,然後catch。catch(...)用於處理所有上面沒有catch的異常。          Java中異常處理的關鍵字有:try.catch.finally.throw.throws,基本用法示例:     [java]  public void Err() throws E   {     try        {         ...      }        catch (E e)        {         throw e;      }       finally       {          ...       }   }     public void Err() throws E {   try      {       ...    }      catch (E e)      {       throw e;    }     finally     {        ...     } }     try.catch和C++類似,不過這裡的catch沒有catch(...),但是有finally塊,這個塊是try結束以後,不管是否有異常,不管異常是否被捕獲,都會執行的一個塊。   另外,throw用於拋出異常,throws用於說明函數可能拋出什麼異常。         Java異常分類   Throwable--異常基類 Error--Throwable的子類,一般由虛擬機拋出,比較嚴重的錯誤,程序要做的是安全退出,其他的無能為力 Exception--Throwable的子類,一般是由程序引起的異常 RuntimeException--Exception的子類,運行時出現的異常,數組越界、空指針這一類的,一般可以通過修改程序來避免 非RuntimeException--Exception的子類,IOException之類的     檢驗異常與非檢驗異常 看到有些地方把這2個概念說的很繞口,我個人的理解是: 1.檢驗異常就是編譯器會檢驗你是否catch了的異常,編譯器會強制要求你寫對應的catch語句,否則編譯報錯。這些異常一般都是方法後面帶有throws的,就是說,方法說明了自己可能會拋出異常的。至於編譯器為什麼要這麼做,也比較好理解,因為我一個方法,既然我已經預見到了可能會拋出異常,那麼你就必須要處理一下,我都提醒你會出錯了,你還不處理,那你這安的是什麼心?除非檢驗異常以外的異常,都屬於這一類。 2.非檢驗異常就是編譯器不會去檢驗你是否catch的,比如像數組越界、空指針這一類的,編譯器不會來管你。RuntimeException和Error屬於這一類。     以上是個人理解,如果有誤,還請各位指出,以便及時糾正,謝謝!       常見異常 ArrayIndexOfBoundsException--數組下標越界 ClassCastException-----------強制轉換類失敗 IllegalArgumentException-----參數異常 NullPointException-----------空指針異常 AssertionError---------------斷言出錯 ExceptionInInitializerError--初始化異常 StackOverflowError-----------棧溢出    

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