「每天一道面试题」检查异常和非检查异常的区别?

「每天一道面试题」检查异常和非检查异常的区别?

非检查异常(unckecked exception)

Error和RuntimeException以及它们的子类。Java编译器在编译时不会发现这种异常,所以不要求程序处理这种异常,当然也可以使用try、catch和finally处理这种异常。当出现这种异常大部分都是代码编写的有问题,应该通过修改代码的方式去解决,而不是捕获处理,例如ClassCastException、NullPointerException等。

检查异常(checked exception)

除了Error和RuntimeException的其它异常。Java编译器在编译时会发现这种异常,所以强制要求对这种异常进行预处理,即使用try、catch和finally处理这种异常,或者用throws子句向上层抛出,否则编译不通过。当出现这种异常一般是由程序的运行环境导致的,例如SQLException、IOException等,需要提前对这种可能出现的异常进行处理。

「每天一道面试题」检查异常和非检查异常的区别?