Java异常体系
什么是异常
异常是阻止程序正确执行的错误事件,只要在Java语句执行中产生了异常,一个异常对象就会被创建,JRE就会寻找处理程序来处理异常,如果有
正确的处理程序,异常就会被处理程序接管,否则将引发运行环境异常,JRE停止运行。
异常处理中的关键字
throw 关键字,用来抛出和处理运行时异常
throws 在方法签名中使用throws来告知应用程序此方法可能会抛出的异常
try-catch 代码块 try块中通常是写需要执行的代码,在catch中需要接收一个代表异常类型的参数
finally 有时异常终止了我们的程序,但是还有一些打开的资源尚未关闭,所以我们用finally进行关闭,
无论有没有异常发生,finally中的代码总会执行, finally中的return也会覆盖之前的return。
异常层级
Throwable有两个子类分别是Exception和Error 其中Exception分为受检查的异常和不受检查的异常
Error通常表示编译时和系统异常,通常不能预期,比如JVM崩溃 内存不足
- 受检查的异常 在程序中能够预期,并且要尝试修复,比如FileNotFoundException,我们必须捕获此类异常,
并提供有用信息和日志。Exception是所有受检查异常的父类。 - 运行时异常(Runtime Exception)又称作不受检查的异常 源于不好的编程,比如在操作数组时要确定数组的
长度,否则可能会出现ArrayIndexOutOfBoundException运行时异常 RuntimeException是所有运行时异常的父类
异常的方法
- String getMessage():方法返回Throwable的String型信息
- void printStackTrace():该方法打印栈轨迹信息到标准错误流。