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

【Java】 异常高频面试题精讲 | 易错点+对比总结

大家好,我是程序员二叉。


简介

本文整理Java异常体系高频面试考点,涵盖Error与Exception区分、常用异常、throw/throws、try-catch-finally执行逻辑、经典异常辨析等内容,知识点精简易懂,适合面试复习与日常学习查阅。欢迎点赞收藏关注。


1. Error 和 Exception 的区别

核心区别

  • Error:JVM 层面严重错误,程序无法捕获、无法恢复,出现后程序直接崩溃。
  • Exception:程序逻辑/运行时异常,可捕获、可处理、可恢复,是开发重点处理对象。

继承关系

二者均直接继承自Throwable

  • Error:包含虚拟机错误、类链接错误等
  • Exception:分为受检异常(编译异常)非受检异常(运行时异常)

2. 常见的 Error / Exception

常见 Error(不可处理)

  1. OutOfMemoryError:内存溢出
  2. StackOverflowError:栈溢出
  3. NoClassDefFoundError:类定义缺失
  4. NoSuchMethodError:方法不存在
  5. LinkageError:类链接错误

常见 Exception(可处理)

非受检异常(RuntimeException,无需强制捕获)
  1. NullPointerException:空指针异常
  2. IndexOutOfBoundsException:下标越界
  3. IllegalArgumentException:非法参数
  4. ClassCastException:类型转换异常
  5. ArithmeticException:算术异常(除零等)
受检异常(编译异常,必须捕获或抛出)
  1. IOException:IO 流异常
  2. SQLException:数据库异常
  3. ClassNotFoundException:类未找到
  4. FileNotFoundException:文件未找到

3. throw 和 throws 的区别

特性throwthrows
作用方法内部手动抛出异常对象方法声明上标识可能抛出的异常
位置方法体内部方法签名后
数量一次只能抛出一个异常可声明多个异常
处理要求受检异常需上层处理受检异常必须捕获或继续向上抛出

代码示例

publicvoidtest()throwsIOException,NullPointerException{thrownewIOException("文件读取失败");}

4. try-catch-finally 执行顺序

  1. 优先执行try代码块
  2. 若出现异常,执行匹配的 catch代码块
  3. 无论是否发生异常、是否捕获成功,最后都会执行 finally
    口诀:try → catch → finally

5. finally 中的代码一定会被执行吗?

不一定,出现以下场景不会执行:

  1. 执行System.exit(0)主动退出 JVM
  2. 线程被强制终止、JVM 崩溃
  3. 系统断电、硬件故障等物理问题
    正常运行环境下,finally 一定会执行。

6. finally 块中存在 return 语句的效果

  • finally 中的return会覆盖 try /catch 中的返回值
  • 方法最终以 finally 里的 return 结果返回
  • 开发规范:禁止在 finally 中使用 return
    *代码示例
publicinttest(){try{return1;}finally{return2;}}// 最终返回结果:2

7. NoClassDefFoundError 和 ClassNotFoundException 的区别

异常类型所属分类产生原因典型场景
ClassNotFoundException受检 Exception运行时找不到对应 class 文件Class.forName、动态加载类
NoClassDefFoundErrorError编译期存在类,运行时缺失类定义Jar 包丢失、版本冲突、类依赖缺失

简单总结:

  • ClassNotFoundException:类从头到尾没找到
  • NoClassDefFoundError:编译有,运行丢了

8. OutOfMemoryError & StackOverflowError 成因

StackOverflowError 栈溢出

原因:方法调用栈深度超出 JVM 栈容量限制
常见场景:无限递归、方法嵌套调用过深

OutOfMemoryError 内存溢出 (OOM)

原因:JVM 堆内存耗尽,无法分配新对象
常见场景:创建海量对象、内存泄漏、大对象持续占用内存


总结(速记版)

  1. Error 是虚拟机级错误,无法处理;Exception 是业务异常,可捕获处理。
  2. throw 抛异常对象,throws 声明异常。
  3. try-catch-finally 顺序固定,正常情况下 finally 必执行。
  4. finally 内 return 会覆盖前面返回值,不建议使用。
  5. ClassNotFoundException 是找不到类文件,NoClassDefFoundError 是编译存在、运行缺失。
  6. 无限递归易引发栈溢出,对象过多 / 内存泄漏易引发堆内存溢出。
http://www.rkmt.cn/news/1480453.html

相关文章:

  • 2026年GEO推广AI营销获客源头厂家评测:toB制造企业AI获客完全指南 - 猫头鹰AI推广
  • CSDN AI数字营销个人版年费究竟值不值?20年IT营销老兵用ROI模型测算:6个月回本关键路径
  • JoyCon-Driver终极指南:揭秘Windows平台下Switch控制器驱动的技术实现
  • 2026昆明手表回收哪家靠谱?本地多渠道实测,规避回收套路 - 薛定谔的梨花猫
  • 2026最新的 无溶剂环氧涂料优质生产厂家实力排行盘点 优先推荐廊坊佐涂防腐设备有限公司 - 奔跑123
  • 你的车载导航和运动手表都在用:深入聊聊NMEA0183协议的前世今生与实战避坑
  • 新手买商标平台怎么选?2026五大平台与四大实测维度全公开 - 资讯纵览
  • 2026年实测|五大GEO优化服务商核心能力全景对标:企业选型避坑全攻略 - GEO优化
  • 前端课程结构图谱工具:拖入JSON就能生成带依赖路径的可点击课程地图
  • 2026最新的 氯化橡胶面漆优质生产厂家实力排行盘点 优先推荐廊坊佐涂防腐设备有限公司 - 奔跑123
  • 5分钟搞定Mac Boot Camp驱动部署:告别繁琐手动操作的一键式解决方案
  • 2026年企业官网AI建站靠谱吗 - 凡科杰建云
  • CSDN AI数字营销发票开具终极问答(含普票自动开具路径、专票增额流程、电子专票法律效力说明)
  • 2026年AI建站和模板建站有什么区别 - 凡科杰建云
  • BK1085 FM收音芯片电路设计:从原理图到PCB布局的完整解析
  • 东莞万江街道金价944元高位震荡,黄金回收如何变现? - 上门黄金回收
  • 从面试题到生产实践:深度拆解华为FusionSphere OpenStack网络平面的‘为什么’
  • 如何彻底清理macOS应用残留?Pearcleaner 5步专业级系统优化指南
  • 从废弃设备到高效服务器:基于Armbian的电视盒子技术重构指南
  • 3分钟简单教程:如何免费让Figma界面变中文
  • 常州武进区金价944元克,回收需防虚高报价陷阱 - 上门黄金回收
  • 【20年搜索生态老兵亲测】:CSDN AI停用≠权重归零,但必须在72小时内完成这5项权重迁移动作
  • 远距离寄快递怎么省钱?试试这3个方法 - 快递物流资讯
  • 2026寻找永久免费去水印软件:从内置功能到AI工具的全场景操作路径 - 爱上科技热点
  • 长沙二手房全屋定制品牌排行 实测品质与服务对比 - 奔跑123
  • 2026最新的 硅酸铝防火包裹优质生产厂家实力排行盘点 推荐廊坊锦茂节能科技有限公司 - 奔跑123
  • 2026年选老钱风钻戒,这三点比克拉数更重要 - 资讯纵览
  • 惠州惠东县黄金回收行情:今日944元/克,合理回收价与避坑指南 - 上门黄金回收
  • 2026年国内主流企业号码认证服务商TOP榜单 - 企业服务推荐
  • 南宁西乡塘区黄金回收现况:旧饰置换热,投资金条需求涨 - 上门黄金回收