异常
什么是异常:
异常就是在程序运行过程中发生的不正常事件如所需文件找不到,网络连接不通或者中断.算术运算出错,数组下标越界等.异常还会中断正在运行的程序.
异常处理:
异常处理是通过五个关键字实现的: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进行了改变,但是不会影响返回结果。
它应该使用栈保存返回值。