异常

什么是异常:

  异常就是在程序运行过程中发生的不正常事件如所需文件找不到,网络连接不通或者中断.算术运算出错,数组下标越界等.异常还会中断正在运行的程序.

异常处理:

  异常处理是通过五个关键字实现的: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进行了改变,但是不会影响返回结果。

  它应该使用栈保存返回值。

 

posted @ 2018-03-10 14:00  小白装大神  阅读(156)  评论(0编辑  收藏  举报