讲师中心 微信公众号
AI工具推荐 视频效率加速

在Java中如何继承Exception类_Java异常继承关系解析

夜伟姑娘_4966

夜伟姑娘_4966

发布时间:2026-01-02 16:43:55

|

693人浏览过

|

来源于php中文网

原创

自定义异常需继承Exception(检查型)或RuntimeException(非检查型);检查型异常强制处理,适用于文件不存在等可恢复场景,需提供无参、String、Throwable及完整构造方法;非检查型异常用于逻辑错误,业务异常推荐检查型。

在java中如何继承exception类_java异常继承关系解析

在Java中,自定义异常类需要继承 Exception 或其子类(如 RuntimeException),核心是明确异常类型(检查型/非检查型)并提供合适的构造方法。

继承 Exception 实现检查型异常

继承 Exception 类创建的异常属于检查型异常(Checked Exception),编译器强制要求调用方处理(try-catch 或 throws)。适合表示可预期、应主动恢复的异常场景,如文件不存在、网络超时等。

推荐做法:

  • 提供无参构造方法
  • 提供带 String 消息的构造方法(调用 super(message))
  • 提供带 Throwable cause 的构造方法(支持异常链)
  • 提供完整参数构造方法(message + cause)

示例:

立即学习“Java免费学习笔记(深入)”;

OpenJDK 24
OpenJDK 24

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

下载
public class InsufficientBalanceException extends Exception {
    public InsufficientBalanceException() {
        super();
    }
    public InsufficientBalanceException(String message) {
        super(message);
    }
    public InsufficientBalanceException(String message, Throwable cause) {
        super(message, cause);
    }
}

继承 RuntimeException 实现非检查型异常

若希望异常不强制处理,应继承 RuntimeException(它本身继承自 Exception)。这类异常属于非检查型异常(Unchecked Exception),常用于程序逻辑错误,如空指针、数组越界、自定义业务逻辑异常(如参数非法)。

注意:不要滥用非检查型异常掩盖本该显式处理的问题;业务层面的“异常状态”(如余额不足)更推荐用检查型异常,以保障调用方感知和处理。

异常继承关系的关键要点

Java 异常体系根类是 Throwable,分为两大分支:

  • Error:JVM 错误(如 OutOfMemoryError),一般不捕获、不继承
  • Exception:程序可处理的异常,再细分为:
    • Checked Exception:除 RuntimeException 及其子类外的所有 Exception 子类
    • Unchecked Exception:RuntimeException 及其所有子类

自定义异常时,继承位置决定其是否受编译检查——只要不是 RuntimeException 的子孙类,就是检查型异常。

使用建议与注意事项

实际开发中需注意:

  • 避免直接继承 Exception 做运行时异常;应继承 RuntimeException
  • 为异常类添加有意义的类名(通常以 Exception 结尾)
  • 必要时重写 toString() 或增加业务字段(如错误码、时间戳),但需保持序列化兼容性
  • 在 throws 声明或 catch 中使用时,遵循里氏替换原则:父类异常声明可被子类异常实现替代

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
string转int
string转int

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

6099

2023.08.02

string转int
string转int

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

6099

2023.08.02

string转int
string转int

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

6099

2023.08.02

scripterror怎么解决
scripterror怎么解决

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

969

2023.10.18

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

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

2820

2023.10.25

C++ 智能指针与现代内存管理
C++ 智能指针与现代内存管理

深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

339

2026.04.23

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

3756

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

306

2025.12.06

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

0

2026.10.14

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn