【是什麼】
異常是超出程序正常正確執行流程的一些特殊情況。異常可以說是程序中的一些錯誤,但並不是所有的錯誤都是異常。例如用戶登錄,正常正確的流程是用戶輸入正確的用戶名和密碼進入系統,但是輸入的密碼不正確,不能登錄系統,這就是一種異常,而不是錯誤。
【爲什麼】
①捕獲異常,處理異常,給用戶一個良好的錯誤提示,增加用戶體驗度。
②處理異常,就是儘可能多的爲各種可能出現的情況做相應的處理,增強程序健壯性,簡單說就是不會使系統崩潰。
②及時處理異常,減少出現硬件和軟件不必要的問題的可能性。
③提高系統安全性。
④通過獲取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個關鍵字try、catch、throw、throws、finally進行管理。
一般結構如下:
Try{
程序代碼
}catch(異常類型 異常的變量名){
程序代碼
}finally{
程序代碼
}
try語句塊中是有可能出現異常或者我們要監聽的語句代碼,try語句塊中出現異常,就會被catch語句捕獲並做相應處理。也可以通過throws關鍵字在方法上聲明該異常的拋出。finally語句塊,finally可以沒有,有也只有一個。假如有finally,那麼無論有沒有發生異常,finally都會在方法return前執行。
注意:
①可以有多個catch,用來匹配多個異常。
②try catch finally均不能單獨使用.
③catch的類型是java語言中定義的,也可以是程序員自己定義的,(例如上文中的PasswordNotCorrentException)表示代碼拋出異常的類型,異常的變量名錶示拋出異常的對象的引用。
④try 、catch、finally三個代碼塊中變量的作用域分別獨立而不能相互訪問.如果要在三個塊中都可以訪問,則需要將變量定義到這些塊的外面.
【異常類型】
豬妖分爲四大類:
①Error:編譯和系統的錯誤
②Runtime Exception:運行時異常,只有代碼運行起來纔會拋出的異常
③Exception:包含運行異常Runtime Exception和非運行異常Non_Runtime Exception
④throw:用戶自定義異常
常見異常分類:
1.NullPointerException:
空指針異常,簡單來說就是某個要用的對象爲空,導致取得的數據爲空。
2.ClassNotFoundException
指定的類不存在,簡單說就是根據工作空間或者路徑或者類名稱,找不到該類。
3.ArrayIndexOutOfBoundsException
數組下標越界,調用的下標超出了數組的範圍。
4.IllegalArgumentException
方法的參數錯誤,一般是調用的方法中參數傳遞有些問題。
5.FileNotFoundException
文件位找到,根據路徑找不到文件。
6.IOException
輸入輸出異常
近些天遇到的異常就這些,下面鏈接是從網上搜索了一些其他的異常分類,與君共勉。