Java面试之异常处理

1、error和exception的区别?

Error类和Exception类的父类都是Throwable类

Error类一般是指与虚拟机相关的问题,如系统奔溃,虚拟机错误,内存空间不足,方法调用栈溢出等。错误导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议程序终止。

Exception类表示程序可以处理的异常,可以捕获且有可能恢复。遇到这种类异常,应尽可能处理异常,使程序恢复运行,而不是随意终止异常。

2、Java异常处理机制

Java对异常类进行了分类,不同类型的异常分类用不用的Java类表示,所有异常类的根类是java.lang.Throwable,Throwable下面有两个派生的子类Error和Exception,Error表示应用程序本身无法克服和恢复的一种严重问题。Exception表示程序还能恢复和克服的问题,其中分为系统异常和普通异常,系统异常是软件本身缺陷导致的问题,也就是开发人员考虑不周到所导致的问题,软件使用者无法克服和恢复,但是这种问题下还可以让系统运行或者让软件死掉,例如,数组下标越界(ArrayIndexOfBoundsException),空指针异常等;普通异常是运行环境的变化或异常导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

Java为系统异常和普通异t常提供了不同的解决方案,编译器强制普通异常必须try..catch处理或用throws声明继续上抛给调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理,所以,编译器不强制用try..catch处理或throws声明,所以系统异常处理也称为uncheched异常。

3、写出常见的5个RuntimeException

     (1)java.lang.NullPointerException空指针异常,出现原因:调用了未经初始化的对性爱那个或者不存在的对象。

     (2)ClassNoFoundException 指定类找不到,出现原因:类的名称和路径加载错误,通常是试图通过字符串来加载某个类时可能引发异常。

     (3)NumberFormatException字符串转换为数字异常,出现原因:字符串数据中包含非数字型字符。

     (4)IndexOutOfBoundsException数组下标越界异常

     (5)IllegalArgumentException 方法传递参数错误

      (6)ClassCastException数据类型转换异常

      (7)NoClassDefFoundExcetion 未找到类定义错误

      (8)SQLException SQL异常

       (9)InstantiationException实例化异常

        (10)NoSuchMethodExceptioin 方法不存在异常

6、throw和throws区别

throw:

    (1)throw语句用在方法体内,表示抛出异常,由方法体内的语句处理

    (2)throw是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行throw一定是抛出了某种异常

throws:

    (1)throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常处理。

    (2)throws主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。

    (3)throws表示出现异常的一种可能性,并不一定会发生这种异常。


你可能感兴趣的:(面试题)