1. 程式人生 > >意料中的意外--異常處理

意料中的意外--異常處理

【是什麼】

   異常是超出程式正常正確執行流程的一些特殊情況。異常可以說是程式中的一些錯誤,但並不是所有的錯誤都是異常。例如使用者登入,正常正確的流程是使用者輸入正確的使用者名稱和密碼進入系統,但是輸入的密碼不正確,不能登入系統,這就是一種異常,而不是錯誤。

【為什麼】

 ①捕獲異常,處理異常,給使用者一個良好的錯誤提示,增加使用者體驗度。

 ②處理異常,就是儘可能多的為各種可能出現的情況做相應的處理,增強程式健壯性,簡單說就是不會使系統崩潰。

 ②及時處理異常,減少出現硬體和軟體不必要的問題的可能性。

 ③提高系統安全性。

 ④通過獲取Java異常資訊,也為程式的開發維護提供了方便,一般通過異常資訊就很快就能找到出現異常的問題(程式碼)所在。

【分類】

 ①程式設計式異常(手動處理的異常)

 ②宣告式異常(自動處理的異常)

宣告式:(web.xml中通過配置來確定不同的異常型別怎麼處理)例如:

<error-page>
<!--異常型別-->
<exception-type>com.bjpowernode.drp.sysmgr.manager.PasswordNotCorrentException</exception-type>
<!--轉向的頁面-->
<location>user_validate.jsp</location>
</error-page>

程式設計式:(在catch到異常時,自己寫相應的處理)

try {
//程式程式碼
}catch (Exception e) {
//失敗,直接為result賦值
result= "error";
// 將源資料返回
errorStudentListGlobal= excelStudentList;
System.out.println("匯入失敗,事務回滾,將源資料返回");
}
 

【關鍵字】

      Java異常處理通過5個關鍵字trycatchthrowthrowsfinally進行管理。

一般結構如下:

Try{
程式程式碼
}catch(異常型別 異常的變數名){
程式程式碼
}finally{
程式程式碼
}

         try語句塊中是有可能出現異常或者我們要監聽的語句程式碼,try語句塊中出現異常,就會被catch語句捕獲並做相應處理。也可以通過throws關鍵字在方法上宣告該異常的丟擲。finally語句塊,finally可以沒有,有也只有一個。假如有finally,那麼無論有沒有發生異常,finally都會在方法return前執行。

注意:

  ①可以有多個catch,用來匹配多個異常。

  ②try catch finally均不能單獨使用.

  ③catch的型別是java語言中定義的,也可以是程式設計師自己定義的,(例如上文中的PasswordNotCorrentException)表示程式碼丟擲異常的型別,異常的變數名錶示丟擲異常的物件的引用。

  ④try catchfinally三個程式碼塊中變數的作用域分別獨立而不能相互訪問.如果要在三個塊中都可以訪問,則需要將變數定義到這些塊的外面.

【異常型別】

豬妖分為四大類:

 ①Error:編譯和系統的錯誤

 ②Runtime Exception:執行時異常,只有程式碼執行起來才會丟擲的異常

 ③Exception:包含執行異常Runtime Exception和非執行異常Non_Runtime Exception

 ④throw:使用者自定義異常

常見異常分類:

 1.NullPointerException:

  空指標異常,簡單來說就是某個要用的物件為空,導致取得的資料為空。

 2.ClassNotFoundException

  指定的類不存在,簡單說就是根據工作空間或者路徑或者類名稱,找不到該類。

 3.ArrayIndexOutOfBoundsException

  陣列下標越界,呼叫的下標超出了陣列的範圍。

 4.IllegalArgumentException

  方法的引數錯誤,一般是呼叫的方法中引數傳遞有些問題。

 5.FileNotFoundException

  檔案位找到,根據路徑找不到檔案。

 6.IOException

  輸入輸出異常

 近些天遇到的異常就這些,下面連結是從網上搜索了一些其他的異常分類,與君共勉。

http://www.cnblogs.com/cvst/p/5822373.html