java異常處理流程

異常處理流程.png

1.當(dāng)程序在運(yùn)行的過程中出現(xiàn)了異常,會(huì)由JVM自動(dòng)根據(jù)異常的類型實(shí)例化一個(gè)與之類型匹配的異常類。
2.產(chǎn)生異常對(duì)象后會(huì)判斷當(dāng)前的語句是否存在異常處理,如果現(xiàn)在沒有異常處理,就交給JVM進(jìn)行默認(rèn)的異常處理,處理方式:輸出異常信息,而后結(jié)束程序的調(diào)用。
3.如果此時(shí)存在異常的捕獲操作,那么會(huì)先有try語句來捕獲產(chǎn)生的異常類實(shí)例化對(duì)象,再與try'語句的每一個(gè)catch進(jìn)行對(duì)比,如果有符合的捕獲類型,則使用當(dāng)前catch的語句來進(jìn)行異常的處理,如果不匹配,則往下繼續(xù)匹配其他catch。
4.不管最后異常處理是否能夠匹配,都要向后執(zhí)行,如果此時(shí)程序中存在finally語句,就先執(zhí)行finally中的代碼。執(zhí)行完finally語句后需要根據(jù)之前的catch匹配結(jié)果來決定如何執(zhí)行,如果之前已經(jīng)成功捕獲異常,就集繼續(xù)執(zhí)行finally之后的代碼,如果之前沒有成功的捕獲異常,九江此異常交給JVM進(jìn)行默認(rèn)處理。
整個(gè)過程就像方法傳遞參數(shù)一樣,只是根據(jù)catch后面的參數(shù)類型進(jìn)行匹配。既然對(duì)象捕獲只是一個(gè)異常類對(duì)象的傳遞過程,那么根據(jù)java中對(duì)象自動(dòng)向上轉(zhuǎn)型,所以異常類對(duì)象都可以向父類對(duì)象轉(zhuǎn)型,也證明了所有異常類對(duì)象都可以使用Exception來接收。
為什么不選擇Throwable?
如果該異常只有Exception類型,如果使用Throwable接受,還會(huì)表示可以處理Error的錯(cuò)誤,二用戶是處理不了Error錯(cuò)誤的(jvm處理),所以開發(fā)中用戶可以處理的異常都要求以Exception為主。

?著作權(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恐怕是大家再熟悉不過的語句了, 你的答案是...
    壹點(diǎn)零閱讀 1,731評(píng)論 0 0
  • 初識(shí)異常(Exception) 比如我們?cè)谌?shù)組里面的某個(gè)值得時(shí)候,經(jīng)常會(huì)出現(xiàn)定義的取值范圍超過了數(shù)組的大小,那么...
    iDaniel閱讀 1,970評(píng)論 1 2
  • 2.JAVA異常 異常指不期而至的各種狀況,如:文件找不到、網(wǎng)絡(luò)連接失敗、非法參數(shù)等。異常是一個(gè)事件,它發(fā)生在程...
    青城樓主閱讀 604評(píng)論 0 0
  • 1、異常 1.1、異常介紹 異常:不正常。生活中的異常:例:在上課時(shí),突然間停電,造成上課終止。 處理:等待來...
    Villain丶Cc閱讀 1,106評(píng)論 0 5
  • 親愛的葛先生,生日快樂。 恍恍惚惚,我們竟已走過兩個(gè)春秋。在這六百多個(gè)日夜里有過開心與悲傷,回首來看快樂總是要多一...
    林小仙仙仙閱讀 8,554評(píng)論 3 2

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