你真的懂try,catch,finally的异常处理吗
- 第一种:try{}catch(){}finally{}return;
该语句按语句正常执行 - 第二种:try{return;}catch(){}finally{}return;
该情况为刚才说的题目情况,即执行完try语句块,将return的值保存在临时栈中,再执行finally语句块,之后返回临时栈中的值。若异常则执行catch,finally{}return - 第三种:ry{}catch(){return;}finally{}return;
无异常:执行try,执行finally,再执行return;
有异常:执行完catch语句块,将return的值保存在临时栈中,再执行finally语句块,之后返回临时栈中的值。 - 第四种:try{}catch(){}finally{return;}
在正常情况(即程序正常执行try catch finally语句块,不会在语句中出现退出程序、线程终止等特殊情况)下,都会执行finally语句块,如果finally中有return,则程序会走finally中的return,如果没有,则先执行try或者catch中的return,将其存入临时栈中,执行完finally语句后才返回临时栈中的值。
具体参考:
try,catch,finally
详解2
悲观者正确,乐观者成功