Java Exception异常类的继承体系详解
1. 异常类的继承体系
Java把所有的非正常情况分成两种:异常(Exception)和错误(Error),它们都继承Throwable父类。

2. Error错误
Error错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断。
通常应用程序无法处理这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。
在定义该方法时,也无须在其throws子句中声明该方法可能抛出Error及其任何子类。
3. Exception异常
Exception分为两大类:
- 运行时异常 [即程序运行时,发生的异常]。
- 编译时异常 [即编程时编译器检查出的异常,Checked异常]。
所有的RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常。
3.1 编译时异常: Checked Exception
只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。
如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译。
Checked异常体现了Java的设计哲学——没有完善错误处理的代码根本就不会被执行!

对于Checked异常的处理方式有如下两种:
(1)当前方法明确知道如何处理该异常,程序应该使用try…catch块来捕获该异常,然后在对应的catch块中修复该异常。

(2)当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。

常见的编译异常:
- SQLException 操作数据库时,查询表可能发生异常
- IOException 操作文件时发生的异常
- FileNotFoundException 当操作一个不存在的文件时,发生异常
- ClassNotFoundException 加载类,但是该类不存在时,发生异常
- EOFException 操作文件,到文件末尾,发生异常
- IllegalArguementException 参数异常
3.2 运行时异常:Runtime Exception
RuntimeException即程序运行时发生的异常,编译时检测不到这种异常:

程序运行后,抛出异常:

Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕获Runtime异常,也可以使用try…catch块来实现。

通过try…catch捕获异常,并打印异常栈信息:

常见的运行时异常:
- NullPointerException 空指针异常
- ArithmeticException 数学运算异常
- ArrayIndexOutOfBoundsException 数组下标越界异常
- ClassCastException 类型转换异常
- NumberFormatException 数字格式不正确异常
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring容器的创建过程之如何注册BeanPostProcessor详解
关于BeanPostProcessor 各位一定不陌生,今天整理的这篇文章总结了如何注册BeanPostProcessor,文中有非常详细的图文示例,需要的朋友可以参考下2021-06-06
java集合类ArrayList和Vector的区别面试精讲
这篇文章主要为大家介绍了java集合类ArrayList和Vector的区别面试全面讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-10-10
springboot集成easypoi导出word换行处理过程
Spring Boot集成Easypoi导出Word时,换行符\n失效显示为空格,解决方法包括生成段落或替换模板中\n为回车,同时需确保变量{{temp}}在Map中设为" "(带空格空字符串),避免空指针或残留变量2025-08-08
使用Spring的StopWatch实现代码性能监控的方法详解
在开发过程中,偶尔还是需要分析代码的执行时间,Spring 框架提供了一个方便的工具类 StopWatch,本文将介绍 StopWatch 的基本用法,并通过示例演示如何在项目中使用 StopWatch 进行代码性能监控2023-12-12


最新评论