面试题总结——异常类(Exception)相关
面试题中的异常(Exception)相关问题、解决以及延伸(持续更新)
- 下面关于异常处理,哪些说法是正确的?
A. 所有在本方法中可能抛出的异常都必须显式的在方法上用throws进行声明
B. Error的子类表示无法修饰的问题
C. RuntimeException表示只在运行时(runtime)才可能出现这个异常。而普通Exception表示在运行时(runtime)和编译期(compile time)都有可能出现的异常
D. Throwable是Exception的子类
正确答案:B
A. 可以不用throws声明,也可以用try{}catch (Exception){} 进行处理,RuntimeException(非受查异常)不需要throw声明。
C. Exception:这种在编译时被强制检查的异常称为"受检查的异常",这种异常强制我们catch或throw的异常。遇到这种异常必须进行catch或throw,如不处理,编译器会报错。比如:IOException。
RuntimeException:运行时异常,这种异常我们不需要处理,完全有虚拟机接管,比如我们常说的NullPointerException,我们在写程序时不会进行catch或throw。
RuntimeException是继承自Exception的,只是虚拟机对这两种异常进行了区分。
D. Throwable是Exception的父类。
- 下面关于Java异常类的描述,说法正确的有?
A. 异常类的继承结构:基类为Throwable,Error和Exception实现Throwable,RuntimeException和IOException等继承Exception
B. 非RuntimeException一般是外部错误(不考虑Error的情况),其必须在当前类被try{}catch语句所捕获
C. Error类体系描述了Java运行系统中内部错误以及资源耗尽的情形,Error不需要捕捉
D. RuntimeException体系包含错误的类型转换、数组越界访问和视图访问空指针等等,必须被try{}catch语句块捕获
正确答案:B.C
A. Error和Exception应该为继承Throwable类
D. RuntimeException(运行时异常/受查异常),这种异常由虚拟机进行处理,不需要try{}catch语句块捕获或throw处理
延伸阅读:
- 异常类的类图