当前位置: 首页 > news >正文

[Java学习日记10】聊聊checked exception和runtime exception

🚀 目录

  1. 身世之谜:谁才是“嫡系”?

  2. 受检异常 (Checked):程序员的“白大褂”

    • 2.1 为什么编译器非要盯着它?

    • 2.2 常见的受检异常有哪些?

  3. 运行时异常 (Runtime):程序员的“遮羞布”

    • 3.1 为什么编译器不理它?

    • 3.2 那些让你抓狂的 NPE 是怎么来的?

  4. 核心对撞:一张表分胜负

  5. 深度思考:到底该抛哪个?

  6. 面试高频考点演练

  7. 结语:优秀的程序员从不逃避异常

1. 身世之谜:谁才是“嫡系”?

在 Java 异常家族里,所有的异常都继承自Exception

  • 运行时异常:特指继承自java.lang.RuntimeException的那些类。

  • 受检异常:除了RuntimeException及其子类以外,所有直接继承自Exception的异常。

一句话总结:只要你没带Runtime这个姓,你就得受编译器的“检阅”。

2. 受检异常 (Checked):程序员的“白大褂”

生活化场景: 就像你进化学实验室必须穿白大褂、戴护目镜。虽然你还没开始做实验,但规则规定:“只要存在危险的可能性,你就必须提前做好防御。”

2.1 为什么编译器非要盯着它?

这类异常通常是**“外部环境”**导致的,不是你逻辑写错了就能避免的。 比如:网络断了、硬盘坏了、文件被室友删了。 Java 认为:这些事儿大概率会发生,如果你不提前写好处理逻辑,程序跑着跑着挂了,用户会一脸懵逼。

2.2 常见案例

  • IOException(读写文件出事了)

  • SQLException(数据库连接炸了)

  • ClassNotFoundException(类找不到了)

3. 运行时异常 (Runtime):程序员的“遮羞布”

生活化场景: 就像你走在图书馆平坦的地上突然左脚拌右脚摔了一跤。这事儿没人能预见,纯粹是因为你自己**“走路不走心”**。

3.1 为什么编译器不理它?

这类异常通常是**“代码逻辑”**导致的,是可以避免的。 Java 认为:如果你连a[10](数组只有 5 位)这种事都要写个try-catch,那代码就没法看了,满屏都是垃圾代码。 编译器默认你是个合格的程序员,这种低级错误你应该通过完善逻辑来解决,而不是靠抛异常。

3.2 常见案例

  • NullPointerException(NPE):最经典的,你拿个空对象去调方法。

  • ArrayIndexOutOfBoundsException:数组越界。

  • ClassCastException:类型转换失败。

4. 核心对撞:一张表教你做人

特征

受检异常 (Checked)

运行时异常 (Runtime)

继承关系

直接继承 Exception

继承 RuntimeException

编译器态度

强迫症:不处理不给过

佛系:你想写就写,不写拉倒

处理方式

try-catch 或 throws

优化代码逻辑

发生原因

外部环境不可控

程序员逻辑漏洞

大学生比喻

进实验室必穿白大褂

走路不看路摔个狗吃屎

5. 深度思考:到底该抛哪个?

这是很多同学在写自定义异常时的纠结。

  • 用 Checked 的时机:如果这个异常是调用者可以恢复的。比如用户输错了文件名,你可以抛个异常让他重新输。

  • 用 Runtime 的时机:如果这个异常是程序严重错误,调用者处理了也没用的。比如数据库配置配错了,或者传入的参数完全不符合逻辑。

6. 面试高频考点演练

Q1:为什么不建议把所有异常都改成 RuntimeException?答案:因为这样会降低代码的健壮性。Checked Exception 是一种“强制约束”,它提醒后来接手你代码的同学:“这里很危险,一定要处理!”

Q2:try-catch 捕获异常后,如果不处理(留空),会有什么后果?答案:这叫“异常吞掉”。这是极其恶劣的行为!程序出错了你却装不知道,等到真正出大问题时,你连报错信息都找不到,只能对着屏幕流泪。

7. 结语

写完这篇日记,我终于把那个该死的IOException处理好了。 受检异常虽然烦人,但它确实像个严厉的导师,逼着我们去思考代码的各种边界情况;而运行时异常则像面镜子,时刻提醒着我们:“代码写得细一点,Bug 就少一点。”

作为大学生的我们:

  • 面对Checked,要耐心写好兜底逻辑。

  • 面对Runtime,要反思自己的逻辑是否严密。

如果你也曾被 NPE 搞到怀疑人生,点个赞安慰一下!下期咱们聊聊深拷贝和浅拷贝

http://www.jsqmd.com/news/944175/

相关文章:

  • 国内评价高的斜管沉淀池厂选哪家,水处理一体化设备/一体化废水的处理装置/污水处理厂设备,斜管沉淀池生产厂家选哪家 - 品牌推荐师
  • 无水印视频下载神器哪个好? 无水印视频下载工具软件推荐,无水印视频下载神器盘点 - 工具软件使用方法推荐
  • 大模型行业风向突变:从涨价潮到降价战,小米、DeepSeek谁能笑到最后?
  • 星月工具箱:轻量集成,多功能离线应用,为电脑日常维护打造的高效助手
  • css手写奥运五环
  • PVE-VDIClient:企业级虚拟桌面基础设施的终极开源解决方案
  • 2026 工程塑料实力厂家推荐:改性尼龙、PEEK、LCP 选材必看 TOP4 优选靠谱工厂清单 - 变量人生001
  • 基于Seeeduino XIAO与Grove模块的环境监测系统开发实践
  • B站视频转文字:从技术实现到学习效率的革命性提升
  • Joy-Con Toolkit高级配置与性能优化技术方案
  • 26NOI内训day6 西安高新一中
  • 网络连接遇阻,揭秘这款游戏的玩法与获胜条件!
  • 18 小凌派 rk2206 鸿蒙 liteos 如何通过修改配置文件,编译不通的案例
  • 2026年嘉德实创冷库服务商推荐榜单:医药GSP冷库、食品速冻冷库、冷链物流系统与温湿度监测工程实力品牌解析 - 品牌企业推荐师(官方)
  • 基于IMU传感器与Python的单摆周期精确测量:从硬件搭建到STFT分析
  • 游戏闪退?可能是Vulkan的锅!手把手教你排查Windows双显卡(独显+核显)的Vulkan支持与切换问题
  • 5分钟掌握Pulover‘s Macro Creator:Windows自动化神器的终极指南
  • 淘汰老式玩具赛车!沙盘赛车才是场地长效创收密码
  • ChatGPT也能“看图说话“?揭秘多模态大模型如何输入图片输出视频!
  • 异步音乐生成API架构深度解析与实战集成指南
  • css基础知识点,底层逻辑与布局,从零开始学前端网站开发
  • 基于D882晶体管的水位报警器DIY:从原理到实战防溢水
  • 解锁FLUX.1-dev模型权重:下载、配置与优化技巧大公开
  • 深信服AD负载均衡实战:从交换机VLAN划分到链路聚合,一次搞定多线接入
  • Apex Legends智能压枪终极指南:三像素检测技术的精准射击革命
  • 从电磁感应到无线充电:DIY线圈点亮LED实验全解析
  • OpenAI万亿IPO前夜豪赌AI基建,谷歌、英伟达等巨头跟风,普通人要为此买单?
  • 2026北京继承律师排行出炉:专业调解成新趋势,榜首实至名归 - GrowthUME
  • 破局期刊撰稿投稿难题:依托 Paperxie 期刊论文专属创作模块,高效打通从选题到成文全链路
  • 宇树科技冲刺“具身智能第一股”,机器人产业将如何重塑半导体产业链?