异常
这是我老师的喜好:就是说一上来就拿一张图给大家看看,过过瘾-_-
这是一张:
异常分类图
来,这里还有一张带中文的常见异常截图!!!
1:先来说说什么是异常吧:
其实就是"阻止当前方法或作用域继续执行的问题"称作异常.
异常又分为两种:①编译时异常 ②运行时异常.
就先说"编译时异常"吧!!!!
也就是在代码还未运行,编译的代码就爆出语法或其他的异常就称之为编译时异常;
再说"运行时异常"!!!
和编译时异常刚刚相反,也就是在代码已经运行,程序运行不了,从而爆出的异常;
2:Try-catch-finally之中的相关问题!!(摘抄)
情况1:
try{} catch(){}finally{} return;
显然程序按顺序执行。
情况2:
try{ return; }catch(){} finally{} return;
程序执行try块中return之前(包括return语句中的表达式运算)代码;
再执行finally块,最后执行try中return;
finally块之后的语句return,因为程序在try中已经return所以不再执行。
情况3:
try{ } catch(){return;} finally{} return;
程序先执行try,如果遇到异常执行catch块,
有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,
最后执行catch块中return. finally之后也就是4处的代码不再执行。
无异常:执行完try再finally再return.
情况4:
try{ return; }catch(){} finally{return;}
程序执行try块中return之前(包括return语句中的表达式运算)代码;
再执行finally块,因为finally块中有return所以提前退出。
情况5:
try{} catch(){return;}finally{return;}
程序执行catch块中return之前(包括return语句中的表达式运算)代码;
再执行finally块,因为finally块中有return所以提前退出。
情况6:
try{ return;}catch(){return;} finally{return;}
程序执行try块中return之前(包括return语句中的表达式运算)代码;
有异常:执行catch块中return之前(包括return语句中的表达式运算)代码;
则再执行finally块,因为finally块中有return所以提前退出。
无异常:则再执行finally块,因为finally块中有return所以提前退出。
(不管有木有出现异常,finally块中代码都会执行,但是,,,,大家看到这个但是了吗!
好接着说,但是当catach块中调用了System.exit(1),那么finally块将不再执行;
finally块中最好不要有return,否则程序会提前退出)