一,例外的捕獲
在上節課我們觀察了例外的出現,而且我們例外的第一節課: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開發,分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源專案,助力開發者成長!
歡迎關注微信公眾號:碼邦主

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265267.html
標籤:Java
