異常
什么是異常:
異常就是在程序運行過程中發生的不正常事件如所需文件找不到,網絡連接不通或者中斷.算術運算出錯,數組下標越界等.異常還會中斷正在運行的程序.
異常處理:
異常處理是通過五個關鍵字實現的:try,catch,finally,throw,throws
ry-catch執行流程比較簡單,首先執行try語句塊中的語句.可能會出現以下幾種情況,

1.如果try中所有的語句正常執行完畢,不會發生異常,那么catch塊中的語句都會被忽略.

2.如果try中的語句在運行過程中發生異常,并且異常與catch中聲明的異常類型匹配那么try中其余的代碼將被會略,而相應的catch塊將被執行

3.如果try中的語句在運行過程中發生異常,但是拋出的異常沒有在catch聲明,那么程序立刻退出
(將上面的算術異常替換為了空指針異常因此異常無法匹配)
![]()

面試題

多重catch

當出現多個catch塊時,當和對應異常類型匹配時,其他catch塊不會再走.并且catch的排列順序是按照異常高低程度排序的,頂級異常一定在最下面
finally不執行的情況
在沒有意外情況發生的情況下無論是否有異常finally塊都會執行,但有以下情況不執行
1.Java虛擬機終止
2.線程終止
結果為:

原因:
在try語句中,在執行return語句時,要返回的結果已經準備好了,就在此時,程序轉到finally執行了。
在轉去之前,try中先把要返回的結果存放到不同于x的局部變量中去,執行完finally之后,在從中取出返回結果,
因此,即使finally中對變量x進行了改變,但是不會影響返回結果。
它應該使用棧保存返回值。