在java中异常中的题目---重要的一点

public  classTest {

    public static void main(String[] args) {
       System.out.println(newTest().test());
    }
    staticint test()
    {
       int x = 1;
       try
       {
            x++;
           return x;
       }
       finally
       {
           ++x;
       }
    }
}

 

      在try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 

   解析:答案是二

    这道题是在try中进行运算结果是二,因为有一个return,所以当结果进行到rueurn的时候,return就会特别霸道的在自己的地盘上开辟一个空间用来存储这个数值,此时运算并不是已经结束了

下面会在finally中再次进行运算,答案是三,但是这个答案并不是最后的运算结果,因为下一步就会再次返回到finally中进行最后的结果取值,所以当我们最后看到的的结果是二.

 

关键字 final    finally      finalize    的区别

final: 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.

内部类访问局部变量,局部变量必须定义成final类型

 

 

finally:是异常处理的语句结构的一部分,表示总是执行

 

finalize 是object类的一个方法,在垃圾收集器执行的时候会被调用被收回对象的对此方法,可以覆盖此方法提供垃圾收集时的其他资源回收

例如:关闭文件等

 

运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见的错误,java编译器要求方法必须声明抛出可能发生的非运行时异常,但并不是要求必须声明抛出未被捕获的运行时异常

 

 

error 和 ecception 有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题,比如内存溢出,不可能指望程序能处理这样的情况

 

exception 表示一种设计或者实现问题.也就是说,他表示如果程序运行正常,从不会发生的情况

 

throws  和 throw 的区别?

throws 声明异常:

      在java语言中,我们可以抛出关键字 throws 声明某个方法,可能抛出的异常,throws是可以同时声明多个异常,之间用","隔开

 

throw 抛出异常:

       在java语言中,我们可以使用关键字throw 来自行抛出某个异常,

  原因:在当前环境中无法解决的参数问题,因此在方法内通过throw抛出异常,把问题交给调用者去解决

 

posted @ 2016-05-30 15:06  残殇--  阅读(436)  评论(0编辑  收藏  举报