Java里的异常体系是如何设计的_Java异常继承结构解析

夏瑶酱_6440

夏瑶酱_6440

2026-01-12

489人浏览

原创

java异常体系以throwable为根,分error(不可恢复严重问题)和exception(可恢复异常);exception又分检查型(如ioexception,编译器强制处理)和非检查型(runtimeexception及其子类,如nullpointerexception,反映逻辑错误,应修复而非捕获)。

java里的异常体系是如何设计的_java异常继承结构解析

Java的异常体系以Throwable为根类,通过Exception和RuntimeException两条主线区分“可检查”与“不可检查”异常,核心设计目标是强制错误处理意识、明确责任边界、支持分层捕获。

Throwable是所有异常的顶层父类

Java中任何异常对象都必须直接或间接继承自Throwable。它有两个直接子类:Error和Exception。Error表示JVM无法恢复的严重问题(如OutOfMemoryError、StackOverflowError),通常不被捕获也不需处理;Exception则代表程序可预期、可恢复的异常情况,是开发者主要关注的对象。

Exception分为检查型异常(Checked)和非检查型异常(Unchecked)

Exception本身是检查型异常的基类,编译器要求调用者必须显式处理(try-catch或throws声明)。但它的子类RuntimeException被特别标记为非检查型——编译器不强制处理。这种划分基于一个关键判断:是否属于“程序逻辑错误”。

  • 检查型异常(如IOException、SQLException):外部因素导致,程序本身无错,但必须应对(比如文件不存在、网络中断)
  • 非检查型异常(如NullPointerException、ArrayIndexOutOfBoundsException):代码缺陷所致,应通过修复逻辑而非捕获来解决

RuntimeException的子类体现常见编程错误

RuntimeException及其子类几乎都反映开发阶段应发现的问题:

OpenJDK 24
OpenJDK 24

OpenJDK 24 Windows x64 官方参考实现(24+36),适合 Windows 环境进行 Java 开发、编译、运行和版本兼容性验证。

下载
  • NullPointerException:访问null引用的成员
  • ArrayIndexOutOfBoundsException:数组下标越界
  • ClassCastException:非法类型转换
  • IllegalArgumentException:方法传入非法参数(常由开发者主动throw)

这些异常在运行时抛出,不强制捕获,鼓励用防御性编程(如判空、校验范围)提前规避。

自定义异常应遵循继承规范

若需扩展异常语义,应根据用途选择父类:

  • 需强制调用方处理(如业务规则违反且必须响应)→ 继承Exception
  • 属编程错误或无需上层干预的运行时问题(如参数校验失败)→ 继承RuntimeException

无论哪种,都建议提供带String消息和Throwable cause的构造方法,便于日志追踪和链式异常封装。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java java异常 overflow

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6199

3

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

2023.09.22

549

3

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

2024.03.01

1678

6

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

969

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2860

5

C++类型转换方式
C++类型转换方式

本专题整合了C++类型转换相关内容,想了解更多相关内容,请阅读专题下面的文章。

2025.07.15

2282

23

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习