2022-07-29 java之異常
一、異常
1. 異常的概念
異常,是不正常的意思 ,程式中執行過程中,出現了非正常情況,嚴重會導致JVM的非
正常停止。
在Java面向對象編程中,把異常視為一個對象,可以把異常定義成一個類。
產生異常就是要創建一個異常對象並拋出一個異常對象。
異常並不是指語法錯誤,語法錯了,編譯不通過,不會產生位元組碼文件,根本不能運
行。
2. 異常體系
異常的根類是:java.lang.Throwsable
其下有兩個類:java.lang.Error和java.lang.Exception,,平時異常就是指Exception
3.圖解異常處理的流程
4.異常處理
1.拋出異常throw
在Java中,提供一個throw關鍵字,它用來拋出異常對象
- 創建一個異常對象 throw new 異常對象
- 需要將這個異常通知給調用者,怎麼告訴對方,通過throw就可以完成。
2.捕獲異常try{}catch{}
3 聲明異常throws
聲明異常:將問題標識出來,給調用者,如果不對異常立即處理,你需要聲明出,交給
調用者來處理。
4. finally程式碼塊
finally:不管程式是不是出異常了,finally塊中程式碼必須執行
無論什麼時侯程式碼必須最終執行
一般在創建流,使用流之後 ,用來關閉流
5.一次捕獲多個異常多次處理的方式
try{
read("b.txt");
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
finally {
System.out.println("不管理程式怎樣,
這裡都將被執行");
}
5.自定義異常實例
- 自定義一個編譯期異常,自定義類,繼承於Exception
- 自定義一個運行期異常類,並繼承於 RuntimeException
6.面試題
面試題1: throws 和 throw的區別(記憶)
throws
- 用在方法聲明之後,跟的是異常類名
- 表示聲明異常,由該方法的調用者來處理
- 表示出現該異常可能性,並不一定會發生異常
throw
- 用在方法體內,跟的異常對象名(new Exxx())
- 表示拋出異常,由方法體內的語句來處理
- 執行throw 一定拋出了某種異常
位置不同:
throws 用方法上,後面跟的是異常類,可以跟多個;
而 throw 用在方法內,後面跟的 是異常對象。 throw new …
功能不同:
throws 聲明 異常,表示出現異常的一種可能性,並不一定會發生這些異常;throw 則是拋出
了異常,
執行 throw 則一定拋出了某種異常對象
面試題2: 編譯期異常 和 運行時異常的區別(記憶)
編譯期異常(checked)異常:
- 在編譯時期,就會檢查,如果沒有處理異常,則編譯失敗
- 都是Excetion類及其子類
運行期異常(runtime)異常:
- 在運行時期,檢查異常,在編譯時期不會報錯
- 都是RuntimeException類及其子類
面試題3:Java的異常體系Error和 Exception的區別和聯繫