第十六章 异常处理
笔试题
一、填空题
1. 【基础题】在“异常”类最上层的类叫Throwable,它有两个直接的子类:Exception和Error。
二、选择题
2. 【基础题】程序员将可能发生异常的代码放在(A )块中,后面紧跟着一个或多个(B )块。
A. try
B. catch
C. try、exception
D. exception、try
三、名词解释
四、问答题
1. 【中等题】运行时异常与一般异常有何异同?
答:
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常
2. 【基础题】throw和throws关键字有什么区别?
答:
throws 用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常, 所以它常用在方法的后面。throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常,但它不会处理它,而是由方法块的throws Exception来调用异常处理类来处理。throw用在程序中,明确表示这里抛出一个异常。 throws用在方法声明的地方,表示这个方法可能会抛出某异常。throw是抛出一个具体的异常类,产生一个异常。throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。
3. 【中等题】JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
答:
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
4. 【中等题】请说出Java中的异常处理机制的简单原理和应用?
答:
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。