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

在Java中受检异常和运行时异常如何区分_Java异常分类解析

秋辰姑娘_6434

秋辰姑娘_6434

发布时间:2026-01-22 14:52:57

|

701人浏览过

|

来源于php中文网

原创

受检异常必须显式处理,否则编译失败;即继承Exception(非RuntimeException子类)的异常需try-catch或throws声明,如IOException;运行时异常(如NullPointerException)继承RuntimeException,编译期不检查;Error(如OutOfMemoryError)不应捕获。

在java中受检异常和运行时异常如何区分_java异常分类解析

受检异常必须显式处理,否则编译失败

Java 编译器强制要求你对 Exception 及其子类(但不包括 RuntimeException)做处理:要么用 try-catch 捕获,要么在方法签名中用 throws 声明。这是编译期检查,不是运行时行为。

典型例子:IOException、SQLException、ClassNotFoundException。比如调用 FileInputStream 构造函数时抛出的 FileNotFoundException,不处理就过不了编译。

  • 即使你确定该异常不会发生(比如读取 classpath 下的资源文件),也得写 try-catch 或加 throws
  • 过度使用受检异常会导致 API 设计僵硬,调用链层层 throws 是常见反模式
  • 自定义受检异常需继承 Exception,且不能是 RuntimeException 的子类

运行时异常继承 RuntimeException,编译器不管

RuntimeException 及其所有子类(如 NullPointerException、ArrayIndexOutOfBoundsException、IllegalArgumentException)属于运行时异常。它们在编译阶段完全不被检查,程序可以正常编译通过,只在运行时才可能抛出。

这类异常通常反映程序逻辑错误或非法输入,应该靠代码审查、单元测试和防御性编程来避免,而不是靠 try-catch 到处兜底。

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

  • 不要在方法签名里声明 throws NullPointerException —— 没意义,编译器也不认
  • 自定义运行时异常应继承 RuntimeException,而非直接继承 Exception
  • 捕获 RuntimeException 本身通常是危险信号,容易掩盖真实 bug

Throwable 是根,Error 一般不该捕获

所有异常都继承自 Throwable。Error(如 OutOfMemoryError、StackOverflowError)和 Exception 是它的两个并列子类。Error 表示严重系统问题,JVM 都可能无法继续运行。

JavaStoryDevelop
JavaStoryDevelop

你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在

下载

除非你在写容器、框架或监控代理,否则不应该尝试捕获 Error:

  • 捕获 OutOfMemoryError 后几乎无法安全恢复,反而可能让状态更混乱
  • ThreadDeath 是 Error 的子类,已被废弃,不要依赖
  • 写日志或清理资源可以放在 finally 或 try-with-resources 中,而不是靠 catch Error

如何快速判断一个异常是受检还是运行时?

看它的直接父类是不是 RuntimeException。不是?再往上查,只要最终继承自 Exception 且**没经过 RuntimeException**,就是受检异常。

IDE 里按住 Ctrl(Windows)或 Cmd(macOS)点进去看类定义最准。命令行下也可以用:

javap -s java.lang.NullPointerException

输出中若显示 Ljava/lang/RuntimeException; 就是运行时异常;若显示 Ljava/lang/Exception; 且没有 RuntimeException 在继承链上,就是受检异常。

别靠名字猜——UnsupportedOperationException 听着像“不支持功能”该报错,但它其实是 RuntimeException 子类,完全不用声明。

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

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

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

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

DeepSeek

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

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

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

989

2023.10.18

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

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

2980

2023.10.25

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3259

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2818

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

1488

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2579

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3290

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1617

2023.08.10

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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