异常处理专题试题汇总

来源:互联网 发布:evdo是什么网络类型 编辑:程序博客网 时间:2024/06/10 03:14

1. 在那种情况下finally里面的语句不会被执行?

答案:如果在finally语句之前执行了终止程序的System.exit()方法, 那么finally语句就不会被执行,这是finally语句不被执行的唯一情况。

 

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

Java提供了两类主要的异常:runtime exception和checked exception。

checked 异常也就是我们经常遇到的IO异常,以及SQL异常. 对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。

runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。

 

3、重写父类的方法时,抛出异常应注意什么?

子类重写父类的方法时声明抛出异常不能比父类“范围”大

 

4、throw 与 throws的区别与联系是什么?

区别一:throw 是语句抛出一个异常;throws 是方法抛出一个异常;
throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
区别二:throws可以单独使用,但throw不能;
区别三:throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。

 

5、Error和Exception的区别

Error和Exception都继承自Throwable类 ,Error是系统中的错误,程序员是不能改变,处理的,在程序编译的时候出现的错误.只有通过修改程序才能修正Error.Exception是在程序运行的时候将要发生的错误,是可以捕获处理的。

 

6、关键字throw与throws的用法有什么差异?

throw:抛出一个异常类对象,通常用于处理自定义异常类情况,例如:
throw new  BankException();
throws:则是在方法声明时,告诉调用者该方法可能抛出的异常,异常的捕获、处理交由调用者去实施。例如:int parseInt(String s)throws NumberFormatException

 

7、是什么造成了Java里面的异常?

以下三种情形下会抛出Java异常:

(1)如果java虚拟机同步检测到代码有不正常的执行情况。

- 当一个赋值表达式违背了正常的语义学(如一个整数除以0)
- 当加载和链接程序的某一部分时发生错误。
- 当资源的占用超过了限定值(如占用了过多的内存,就会发生outofmemory异常)
- 当程序访问了不存在的文件资源时,也可能造成异常。

(2)当一个throw语句被执行的情况下也会抛出Java异常
(3)发生异步的异常

- 当一个被停用的方法或者被丢弃的(deprecated)的方法被调用的情况下。
- 当java虚拟机发生了内部错误的情况下。

 

8、java中异常处理机制的原理是什么

当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

原创粉丝点击