Java Exception异常类的继承体系详解

 更新时间:2025年11月22日 09:22:34   作者:丿似锦  
Java中的异常处理机制分为异常(Exception)和错误(Error)两大类,异常分为编译时异常(CheckedException)和运行时异常(RuntimeException),编译时异常需在代码中显式处理,而运行时异常可以使用try-catch块捕获

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 数字格式不正确异常

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java在运行时能修改工作目录吗

    java在运行时能修改工作目录吗

    这篇文章主要给大家介绍了关于java在运行时能修改工作目录的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • 如何解决@SpringBootApplication报错问题

    如何解决@SpringBootApplication报错问题

    这篇文章主要介绍了如何解决@SpringBootApplication报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java中properties文件中的中文乱码问题

    Java中properties文件中的中文乱码问题

    Properties为了方便用户的配置,用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,能让用户够脱离程序本身去修改相关的变量设置,这篇文章主要介绍了Java中properties文件中的中文乱码问题,需要的朋友可以参考下
    2023-08-08
  • Java关于MD5文件校验问题处理

    Java关于MD5文件校验问题处理

    文章主要介绍了Java获取文件MD5值的五种方法,包括原始读入内存、分多次读入、使用字节数组转十六进制字符串、利用commons-codec包等,并解释了MD5算法原理、用途及安全性,最后提供了验证生成MD5值正确性的方法
    2026-03-03
  • Druid监控分布式实现过程解析

    Druid监控分布式实现过程解析

    这篇文章主要介绍了Druid监控分布式实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • springboot validator枚举值校验功能实现

    springboot validator枚举值校验功能实现

    这篇文章主要介绍了springboot validator枚举值校验功能实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java编程思想对象的容纳实例详解

    Java编程思想对象的容纳实例详解

    这篇文章主要介绍了Java编程思想对象的容纳实例详解,内容比较详细,涵盖的东西也比较多,具有参考价值,需要的朋友了解下。
    2017-09-09
  • java枚举使用详细介绍及实现

    java枚举使用详细介绍及实现

    这篇文章主要介绍了java枚举使用详细介绍及实现的相关资料,需要的朋友可以参考下
    2017-06-06
  • Spring MVC概念+项目创建+@RequestMappring案例代码

    Spring MVC概念+项目创建+@RequestMappring案例代码

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,这篇文章主要介绍了Spring MVC概念+项目创建+@RequestMappring,需要的朋友可以参考下
    2023-02-02
  • Spring Boot集成SpringFox 3.0与Pageable参数处理方法

    Spring Boot集成SpringFox 3.0与Pageable参数处理方法

    这篇文章主要介绍了Spring Boot集成SpringFox 3.0与Pageable参数处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-10-10

最新评论