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

【是什麼】

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

【爲什麼】

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

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

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

 ③提高系統安全性。

 ④通過獲取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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章