异常的深入研究与分析(2)

栏目:Java8基础 作者:admin 日期:2015-05-31 评论:1 点击: 2,931 次

本文主要是关于异常的面试题目,出自前几年的迅雷,支付宝等名企的笔试题目。内容由金丝燕网原创编辑,转载请注明链接。

题目一:考察异常类的继承结构

那个类是所有异常的基础类?
A String
B Error
C Throwable
D RuntimeException
参考答案:
C
试题分析:
在Java的lang包里面有一个Throwable类,它是所有异常的父类或者间接父类,它有两个直接子类:Error和Exception。Error及其子类是处理系统内部及程序运行环境的异常,一般与硬件有关,由系统直接处理,不需要程序员在程序中处理。Exception又分两大类,运行时异常(RuntimeException)和非运行时异常。其中类RuntimeException代表运行时由Java虚拟机产生的异常,例如算术运算异常ArithmeticException,数组越界异常arrayIndexOutOfBoundsException等;非运行时异常,例如输入输入异常IOException等,Java编译器要求Java程序必须捕获或声明所有非运行时异常,但对运行时异常可以不做处理,因此,在编程时非运行时异常如果不处理,编译时会出错。

题目二:考察异常捕获的结构

分析下面给出的Java代码,编译运行后,输出的结果是什么?
public class print_message {
    public static void main(String[] args) {
        print();
    }    
    static void print(){
        try{        
            System.out.println("thank you !");    
        }finally{    
            System.out.println("I am sorry !");        
        }
        }
}
A thank you !
B I am sorry !
C thank you !
  I am sorry !
D 代码不能编译
参考答案:
C
试题分析:
在Java中,try和catch可以连用,try-catch-finally可以连用,但是try,catch,finally却不能单独使用,如果在程序中只想使用try而不想使用catch也可以,但是try的后面必须有finally。
在本题中,try中的打印语句并没有异常发生所以正常输出,对于finally无论有没有异常发生,总是要执行的。

题目三:考察异常声明与抛出的区别

TimedOutException不是一个RuntimeException,下面的那些选项载入程序中,使程序可以正常运行?
A public void final()
B public void final() throws Exception
C public void final() throws TimedOutException
D public void final() throw TimedOutException
E public throw TimedOutException void final()
参考答案:
BC
试题分析:
如果一个程序在运行时候有异常发生,而这个异常又不是RuntimeException或者Error,那么程序必须对这个异常进行捕获处理或者声明抛出该异常。捕获异常使用try-catch-finally,而声明异常则是在声明方法的同时将会发生的异常进行声明,使用关键字throws。
A项没有使用关键字声明异常,所以是错误的。由于Exception是所有异常的父类,当然也可以代表TimedOutException,所以B项是正确的。C项符合声明异常的格式,是正确的。在D项中,throw是抛出异常,而不是声明异常,关键字使用错误,所以D项是错的。E项的语法格式是错误的。

异常的深入研究与分析(2):等您坐沙发呢!

发表评论