面试篇——异常处理

1.Error、Exception区别

Error类和Exception类的父类都是throwable类,它们的区别是:
(1)Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,线程死锁,方法调用栈溢出等。对于这类错误导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。
(2)Exception类表示程序可以处理的异常,可以捕获而且可能恢复,遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不能随意终止异常。

2.Java中的异常处理机制的简单原理和应用。

(1)异常是指Java程序运行时(非编译)所发生的非正常情况或错误。
(2)Java使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对象中,该对象中包含有异常的信息。
(3)Java可以自定义异常类,所有异常的根类为为 java.lang.Throwable,Throwable 下面又派生了两个子类:Error 和 Exception。其中Exception又分为运行时异常和检查异常。
运行时异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉。例如数组越界( ArrayIndexOutOfBoundsException ) , 空 指 针 异 常(NullPointerException)、类转换异常(ClassCastException);
检查异常是运行环境的变化或者异常所导致的问题,是用户能够克服的问题,例如网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。
Java为运行时异常和检查异常提供了不同的解决方案,编译器强制检查异常必须try…catch处理或者用throws声明继续抛给上层调用方法处理,所以检查异常也称为checked异常,而运行异常可以处理也可以不处理,所以编译器不强制用try…catch处理或者用throws声明。所以运行异常也称为Runtime异常。

3.常见异常

ArithmeticException(算术异常)
ClassCastException (类转换异常)
IllegalArgumentException (非法参数异常)
IndexOutOfBoundsException (下标越界异常)
NullPointerException (空指针异常)

4.Java的异常有哪几种,有什么区别?

两大类,一般异常和运行时异常。
一般异常:这些异常是在定义方法时声明抛出的,这些异常必须用try…catch抛出,或throws处理,如果不处理程序将编译失败,比如IOException、FileNotFoundException、SQLException 等。
运行时异常:是程序运行时可能报出的异常,可以用try…catch抓取,也可以不作任何处理。例如:NullPointerException 异常是一种比较常见的运行时异常。

5.throws和throw有什么区别?

throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常,每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。

6.final,finally,finalize的区别

final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收。例如关闭文件等。JVM不保证此方法总被调用。

猜你喜欢

转载自blog.csdn.net/weixin_44100795/article/details/85029212
今日推荐