一,異常的捕獲
在上節課我們觀察了異常的出現,而且我們異常的第一節課:Java異常處理(觀察常見異常)就說了如果程序出現了異常則出現異常之后的代碼就不再執行了,相當於中斷了程序,如果要出現異常之后的代碼還能繼續執行,則需要將這個異常捕獲處理之后才可以
DEMO:出現異常的代碼

此時發現出現數字格式化異常,也就是不能將一個非數字類型的字符串轉換成一個整數,導致了后面的代碼沒有執行,如果要讓后面的代碼執行需要先捕獲處理異常
異常處理的語法如下:

其中“異常類型”確定了你當前的這個try語句塊只能捕獲你給定的異常類型以及該異常類型的子類類型。
DEMO:處理異常


發現了出現異常的之后的代碼也執行了,但是沒有打印出異常信息,如果打印出異常信息,只需要調用異常對象的“printStackTrace()”
DEMO:打印出異常信息


發現了我們在 catch 語句中定義的異常類型是Exception,但是我們try 語句塊中出現的異常是“java.lang.NumberFormatException ",那感覺不一樣卻能捕獲,是什么原因呢﹖其實"java.lang.Exception”是“java.lang.NumberFormatException”的父類
發現了能打印異常信息,同時能執行異常出現之后的代碼。其實上以上處理異常的語句還不夠完善,因為有這樣的需求:要求一段代碼不管是否出現異常都必須執行,那么這斷代碼需要放到finally語句中,於是要在catch 之后加上finally語句。
DEMO:finally語句



以上的代碼證明了不管是否出現異常finally中的程序都會被執行。
我們上面分析出現異常的代碼之后的程序還會被執行,但是如果這個程序是在try語句塊中呢?
DEMO:如果出現異常代碼之后的代碼是在try 語句塊中



如果出現異常之后的程序在try語句塊之外則處理了異常就會被執行,
如果出現異常之后的代碼是try語句塊之內則不會被執行。
總結:
1、出現異常之后的代碼如果不做異常處理或者沒有捕獲到則不會被執行,也就是終止了程序
2、如果處理了異常:
I-在try語句塊之外的程序會被執行
|-如果是在try語句塊之內則就算異常被處理完畢出現異常后面的代碼還是不會被執行
3、finally語句中的代碼不管是否出現異常、不管是否處理了異常都會被執行。
有完整的Java初級,高級對應的學習路線和資料!專注於java開發。分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源項目,助力開發者成長!
歡迎關注微信公眾號:碼邦主

