Java中的异常可以分为两种异常类型--受检异常(checked exception)和非受检异常(unchecked exception)。非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,其他所有的异常类都被称之为受检异常。两种类型的异常在作用上没有差别,唯一的差别是使用受检异常时的合法性要在编译时刻由编译器来检测,因此受检异常在使用的时候需要比非受检异常更多的代码来规避编译错误。
目前的主流意见是,最好优先使用非受检异常。
理由:如果公开方法声明了会抛出一个受检异常,那么这个API的使用者肯定已经使用了try-catch-finally来处理这个异常。如果在后面的版本更新中,发现该API抛出这个异常是不合适的,也不能直接把这个异常的声明删除。因为这样会造成之前的API使用者的代码无法通过编译。
对于未检查异常也叫RuntimeException(运行时异常),对于运行时异常,java编译器不要求你一定要把它捕获或者一定要继续抛出,但是对checkedexception(检查异常)要求你必须要在方法里面或者捕获或者继续抛出.
时间: 2024-10-10 13:15:31