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

在Java里受检异常和运行时异常有什么区别_Java异常分类说明

轻婷酱_2978

轻婷酱_2978

发布时间:2026-01-29 13:30:01

|

129人浏览过

|

来源于php中文网

原创

一眼判断异常是否受检:是RuntimeException子类→运行时异常;否则属Exception→受检异常。编译器强制处理受检异常因其代表外部可变场景,运行时异常则暴露代码缺陷,应修复而非掩盖。

在java里受检异常和运行时异常有什么区别_java异常分类说明

怎么一眼判断一个异常是受检还是运行时?

看它是不是 RuntimeException 的子类:是 → 运行时异常;不是,但属于 Exception → 受检异常。比如 IOException 继承自 Exception 但没继承 RuntimeException,所以编译器会报错:“Unhandled exception type IOException”;而 NullPointerException 直接是 RuntimeException 子类,写了不处理也照常编译通过。

  • 别靠名字猜:不是所有带“Exception”的都是受检异常(IllegalArgumentException 就是运行时)
  • IDE 提示最准:光标悬停在异常类名上,看继承树里有没有 RuntimeException
  • 查 Javadoc 是终极手段:点进类定义,第一行通常写着 public class XXXException extends RuntimeException 或 ... extends Exception

为什么编译器强制处理受检异常,却放任运行时异常?

设计意图不同:受检异常代表「外部可变、程序本该应对」的场景,比如文件可能被删、网络可能断、数据库连接可能超时——这些不怪代码写得烂,但你得有兜底逻辑;运行时异常则暴露「代码本身有缺陷」,比如调用 list.get(10) 却没检查 list.size(),或对 null 对象调 .toString(),这类问题应该修复,而不是靠 try-catch 掩盖。

  • 强行捕获运行时异常反而干扰调试:比如包一层 try-catch 吞掉 NullPointerException,结果 bug 隐藏更深
  • 滥用 throws 声明受检异常会污染 API:把 IOException 一路往上抛到 main,等于放弃责任
  • 真实项目中,90% 的运行时异常不该被捕获,而 80% 的受检异常必须被明确处理(哪怕只是记录日志+转成运行时异常再抛)

实际写代码时,怎么选处理方式?

核心原则:受检异常必须显式处理(try-catch 或 throws),运行时异常按需处理——只在你能恢复、能降级、或需要审计时才捕获。

Audio Upload Aioz Stream Free
Audio Upload Aioz Stream Free

基于 AIOZ Stream API 的免费音频上传技能,通过三步流程(Create → Upload Part → Complete)将本地音频文件上传至 AIOZ 流媒体平台。支持默认快速上传方式,使用默认编码配置,上传完成后返回 HLS 流媒体播放链接。使用 API Key (stream-publ...)进行认证。

下载
  • 对 FileNotFoundException:用 try-catch 提供默认配置,或提示用户重新选择路径
  • 对 SQLException:通常包装成自定义业务异常(如 OrderPersistenceException),并 throws 向上交由事务切面统一回滚
  • 对 IllegalArgumentException:一般不捕获,而是提前校验参数,抛出时保留堆栈便于定位调用方问题
  • 绝对避免:catch (Exception e) { /* 啥也不干 */ } —— 它会同时吞掉受检和运行时异常,等于埋雷

容易忽略的关键细节

很多人以为“运行时异常不用管”,但 JVM 处理它们的方式其实很刚性:一旦抛出且未被捕获,当前线程立即终止,堆栈清空,如果发生在非主线程里,连日志都可能被吞掉。

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

  • finally 块在运行时异常发生时仍会执行——这是释放资源(如关闭 InputStream)的最后机会
  • 受检异常的声明具有传染性:A 方法 throws IOException,B 调用 A,B 就必须处理,除非 B 也 throws,否则编译失败
  • 自定义异常时,继承 RuntimeException 还是 Exception,决定了调用方是否被编译器“逼着”处理,这个决策比命名还重要

热门AI工具

更多
WorkBuddy

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

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

DeepSeek

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

AionClaw
AionClaw Hot

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

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

豆包大模型

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

立刻MV
立刻MV Hot

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

Laper
Laper Hot

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

相关专题

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

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

549

2023.09.22

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

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

1698

2024.03.01

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

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

549

2023.09.22

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

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

1698

2024.03.01

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6307

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2648

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6307

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2648

2023.08.10

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

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

精品课程

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