Java異常體系總結(jié)

Java異常體系圖
Error(錯(cuò)誤):

是程序無(wú)法處理的錯(cuò)誤,表示運(yùn)行應(yīng)用程序中較嚴(yán)重問(wèn)題。例如,Java虛擬機(jī)運(yùn)行錯(cuò)誤(Virtual MachineError)

Exception(異常):

是程序本身可以處理的異常。

異常和錯(cuò)誤的區(qū)別:異常能被程序本身可以處理,錯(cuò)誤是無(wú)法處理。

Exception分為:可查的異常(checked exceptions)和不可查的異常(unchecked exceptions)
RuntimeException為不可查異常,其余異常都屬于可查異常(編譯異常)。

編譯性異常(checked exceptions)必須拋出異常,否則無(wú)法編譯通過(guò)。

一個(gè) try 塊可能有多個(gè) catch 塊。Java虛擬機(jī)會(huì)把實(shí)際拋出的異常對(duì)象依次和各個(gè)catch代碼塊聲明的異常類型匹配,如果異常對(duì)象為某個(gè)異常類型或其子類的實(shí)例,就執(zhí)行這個(gè)catch代碼塊,不會(huì)再執(zhí)行其他的 catch代碼塊

當(dāng)try捕獲到異常,catch語(yǔ)句塊里有處理此異常的情況:在try語(yǔ)句塊中是按照順序來(lái)執(zhí)行的,當(dāng)執(zhí)行到某一條語(yǔ)句出現(xiàn)異常時(shí),程序?qū)⑻絚atch語(yǔ)句塊,并與catch語(yǔ)句塊逐一匹配,找到與之對(duì)應(yīng)的處理程序,其他的catch語(yǔ)句塊將不會(huì)被執(zhí)行,而try語(yǔ)句塊中,出現(xiàn)異常之后的語(yǔ)句也不會(huì)被執(zhí)行,catch語(yǔ)句塊執(zhí)行完后,執(zhí)行finally語(yǔ)句塊里的語(yǔ)句,最后執(zhí)行finally語(yǔ)句塊后的語(yǔ)句;

throws和throw的使用區(qū)別:

throws用在方法聲明中,throw用在方法體中,
如 throw new MyException("除數(shù)不能是負(fù)數(shù)"); 程序會(huì)在throw語(yǔ)句后立即終止。

自定義異常:
public class MyException extends Exception { 

  private static final long serialVersionUID = 1L; 

  // 提供無(wú)參數(shù)的構(gòu)造方法
  public MyException() { 
  } 

  // 提供一個(gè)有參數(shù)的構(gòu)造方法,可自動(dòng)生成
  public MyException(String message) { 
    super(message);// 把參數(shù)傳遞給Throwable的帶String參數(shù)的構(gòu)造方法 
  } 

} 

在異常判斷條件成立的地方調(diào)用throw new MyException()拋出這個(gè)自定義異常。

Java異常try里面有return,finally代碼會(huì)執(zhí)行嗎?

會(huì)執(zhí)行。finally{}塊的代碼只有在try{}塊中包含遇到System.exit(0);之類的導(dǎo)致Java虛擬機(jī)直接退出的語(yǔ)句才會(huì)不執(zhí)行。
當(dāng)程序執(zhí)行try{}遇到return時(shí),程序會(huì)先執(zhí)行return語(yǔ)句,但并不會(huì)立即返回,也就是在將要返回、但并未返回的時(shí)候,程序把執(zhí)行流程轉(zhuǎn)去執(zhí)行finally塊,當(dāng)finally塊執(zhí)行完成后就直接返回剛才return語(yǔ)句已經(jīng)準(zhǔn)備好的結(jié)果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 八、深入理解java異常處理機(jī)制 引子try…catch…finally恐怕是大家再熟悉不過(guò)的語(yǔ)句了, 你的答案是...
    壹點(diǎn)零閱讀 1,730評(píng)論 0 0
  • 初識(shí)異常(Exception) 比如我們?cè)谌?shù)組里面的某個(gè)值得時(shí)候,經(jīng)常會(huì)出現(xiàn)定義的取值范圍超過(guò)了數(shù)組的大小,那么...
    iDaniel閱讀 1,966評(píng)論 1 2
  • 2.JAVA異常 異常指不期而至的各種狀況,如:文件找不到、網(wǎng)絡(luò)連接失敗、非法參數(shù)等。異常是一個(gè)事件,它發(fā)生在程...
    青城樓主閱讀 600評(píng)論 0 0
  • 引言 在程序運(yùn)行過(guò)程中(注意是運(yùn)行階段,程序可以通過(guò)編譯),如果JVM檢測(cè)出一個(gè)不可能執(zhí)行的操作,就會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)...
    Steven1997閱讀 2,597評(píng)論 1 6
  • 概念介紹 異常是發(fā)生在程序執(zhí)行過(guò)程中阻礙程序正常執(zhí)行的錯(cuò)誤事件,當(dāng)一個(gè)程序出現(xiàn)錯(cuò)誤時(shí),可能的情況有如下3種: 語(yǔ)法...
    niaoge2016閱讀 5,617評(píng)論 2 20

友情鏈接更多精彩內(nèi)容