沒有異常的情況下烈疚,不會執(zhí)行catch的內(nèi)容欲低,會先執(zhí)行try,在執(zhí)行finally
image.png
image.png
有異常的情況下則先try德召,再catch,最后finally
image.png
image.png
如果在catch里面直接return呢汽纤?
image.png
image.png
好像一樣哈上岗,其實debug發(fā)現(xiàn),還是有點不同的冒版,這里的return是走的16行液茎,catch中的return,而不是23行的return辞嗡,也就是是說捆等,先執(zhí)行的try,然后catch续室,finally栋烤,最后在返回catch中return。
如果在finally里面加return呢挺狰?
image.png
此時編譯器就會報錯明郭,認(rèn)為23行的return已經(jīng)不可能走到,這里走的是21行的return
catch與finally同時return又會怎么走丰泊?
image.png
image.png
debug下來是一路順坡薯定,19行的return不走,走的是22行的return瞳购。
try catch finally 三個都加return话侄,同臺競技。我預(yù)先認(rèn)為不是從catch走
image.png
image.png
結(jié)果是還是執(zhí)行finally里面的return学赛。
總結(jié)下:
try catch finally 中年堆,一旦出現(xiàn)異常,try中的return就不會執(zhí)行盏浇,如果finally中有return就執(zhí)行finally中的变丧,finally中沒有就執(zhí)行catch中的(catch中有return是,是緩存了return中的對象的绢掰,但是不返回痒蓬,在finally中返回,對象的值也可以被finally中更改)