当前位置: 首页 > 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.jsqmd.com/news/968704/

相关文章:

  • 西区黄金回收实测:6家正规店报价对比与真实经历 宁城西 - 上门黄金回收
  • CSDN AI数字营销个人版年费究竟值不值?20年IT营销老兵用ROI模型测算:6个月回本关键路径
  • 清华大学PPT模板终极指南:三步打造专业学术演示的完整解决方案
  • 南京鼓楼区黄金回收行情 944元/克如何卖得明白 - 上门黄金回收
  • 终极指南:如何免费让Mem Reduct说中文?3分钟搞定Windows内存管家
  • musescore开启noteNames便于新手阅读五线谱演奏钢琴/电子琴技巧
  • GEO优化服务商选型指南:5家主流厂商的核心能力与排名差异(2026版) - GEO优化
  • Android系统权限深度探索:Shizuku如何实现无Root权限提升
  • JoyCon-Driver终极指南:揭秘Windows平台下Switch控制器驱动的技术实现
  • STM32库函数三种集成方法详解:从预编译库到源码调试实战
  • 为什么你续费后旧文章仍没流量?CSDN AI套餐过期导致的“内容可见性断层”深度拆解(含CDN缓存链路图)
  • 2026昆明手表回收哪家靠谱?本地多渠道实测,规避回收套路 - 薛定谔的梨花猫
  • VMware macOS解锁终极指南:轻松在普通PC上运行苹果系统
  • 2026最新的 无溶剂环氧涂料优质生产厂家实力排行盘点 优先推荐廊坊佐涂防腐设备有限公司 - 奔跑123
  • 美国商标购买平台哪家靠谱?2026年6大平台实测对比,跨境卖家必看 - 资讯纵览
  • 2026年国内自动抓梁厂家实力排行 推荐河北禹创水利机械有限公司 - 奔跑123
  • 构建现代Web应用权限控制:从零到一的RBAC实践
  • 如何5分钟完成Mac Boot Camp驱动自动化部署:Brigadier终极解决方案指南
  • Windows 11 LTSC恢复微软商店的终极指南:3分钟告别应用荒
  • 萧邦官方售后维修保养中心:全国直营网点地址及联系电话(2026年6月发布) - 亨得利官方服务中心
  • 12306ForMac:Mac用户的终极抢票助手完整使用指南
  • 终极指南:如何用Keyboard Chatter Blocker快速修复机械键盘连击问题
  • 你的车载导航和运动手表都在用:深入聊聊NMEA0183协议的前世今生与实战避坑
  • 济南槐荫区黄金回收行情解析及六大正规机构对比 - 上门黄金回收
  • 新手买商标平台怎么选?2026五大平台与四大实测维度全公开 - 资讯纵览
  • ngx_http_set_exten
  • 别再凭感觉定选题!用CSDN真实CTR/CSR/SSR三指标交叉分析,3天内重构你的技术博客选题矩阵
  • 别墅新中式整木定制工厂哪家好 - 舒雯文化
  • AI教材编写新选择!低查重AI工具,快速生成规范教材内容!
  • 文本扩展:可控语义增殖的Prompt工程方法论