異常:
Throwable:包含Error 和 Exception。
Error :比較嚴重的問題 ,系統性問題 (虛擬機出題,系統出現問題)
Exception:程序出現的一些問題,通常是由於程序人員考慮不周等情況 發生的問題
(程序出現的問題,這些問題本省可以避免)
異常分類:
1.運行時異常:不要求強制處理,只有在運行時可能發生異常
2.受檢查異常(check):必須處理,不能會不會發生異常
(有些操作 jvm認爲可能出現異常機率較大 所以要求強制處理 )
異常處理:
throws:主要針對受檢查異常 ,寫在方法上,表明該方法具有拋出異常的功能 ,能拋異常根據throws 後面跟的異常類型
( public static void main(String[] args) throws FileNotFoundException )
運行時異常不需要 throws 標明具有拋異常的功能
拋出:
1.jdk拋出:FileInputStream fis=new FileInputStream("D:/11.txt");
異常由jdk拋出來 逐級向上拋出 最後如果main也沒處理 那麼就拋給虛擬機,虛擬機接受異常 立即停止執行
2.人爲拋出:throw 拋異常
throw new Exception("除數不能爲0");
捕獲:try {} catch (Exception e) {} catch (Exception e) {} finally{}
catch捕獲異常 針對 try中的代碼塊,catch在捕獲的時候只能捕獲參數指定的異常,如果異常被捕獲,那麼不在向下捕獲,跳出捕獲模塊,執行try catch模塊下面的語句
try中產生異常,try中後面代碼不在運行
finally:不能try中代碼有木有異常 都會執行,除非強制退出JVM
一般 catch (Exception e) {} 放在catch模塊的最後位置
一般不建議使用 try {try {} catch (Exception e) {} } catch (Exception e) {} ,try catch嵌套,
建議大家採用try {} catch (Exception e) {} catch (Exception e) {}
catch中不建議編寫業務代邏輯碼 try中代碼要儘量少
//非常不建議,不夠規範
// try {
// int n=i/j;
// }finally{
// System.out.println("--finally--");
// }
自定義異常:
1、能夠更好的查找程序的錯誤
2、讓異常信息更友好
***異常能夠改變程序執行的流程
***提供程序出錯的解決方式之一