news 2026/6/6 22:08:18

【Java】异常机制高频面试总结|Error、Exception、finally、OOM全梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java】异常机制高频面试总结|Error、Exception、finally、OOM全梳理

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


简介

本文汇总Java异常面试必考知识点,区分Error与Exception、throw/throws用法、try-catch-finally执行逻辑、finally特殊坑点、两种类找不到异常、栈溢出与堆溢出原理,干货精炼,适合面试背诵与日常开发查阅。欢迎点赞关注收藏。


一、Error 和 Exception 的区别

二者都继承自Throwable

  1. Error:JVM级系统错误,程序无法捕获、无法修复,由虚拟机抛出。
  2. Exception:程序业务异常,可捕获处理,是开发中重点关注的异常。

二、常见Error与Exception

1. 常见Error

  • OutOfMemoryError:堆内存溢出
  • StackOverflowError:虚拟机栈溢出
  • NoClassDefFoundError:运行时缺失编译存在的类
  • NoSuchMethodError:方法缺失(依赖版本冲突)

2. 常见Exception

运行时异常(RuntimeException,非受检)
  • NullPointerException空指针、IndexOutOfBoundsException数组越界
  • ClassCastException类型强转异常、ArithmeticException除零异常
  • IllegalArgumentException非法参数
受检异常(编译必须捕获/抛出)
  • IOExceptionSQLExceptionFileNotFoundExceptionClassNotFoundException

三、throw 和 throws 的区别

  1. throws:写在方法声明处,声明本方法可能抛出异常,支持多个异常。
publicvoidtest()throwsIOException{}

2.throw:写在方法内部,手动抛出单个异常实例。

thrownewRuntimeException("参数错误");

四、try-catch-finally 执行顺序

  1. 正常无异常:try → finally
  2. 出现异常:try → catch → finally

五、finally 代码一定执行吗?

不一定,下述场景 finally 不会执行:

  1. try 中执行System.exit(0)退出 JVM
  2. JVM 进程崩溃、操作系统宕机
  3. 执行线程被暴力终止

六、finally 中写 return 的问题

  1. finally 的 return 会覆盖 try/catch 的 return 返回值;
  2. 会屏蔽代码抛出的异常,异常被吞掉无法向外抛出;

开发规范:禁止在 finally 中使用 return。


七、NoClassDefFoundError 和 ClassNotFoundException 区别

  1. ClassNotFoundException:受检异常,手动Class.forName/ClassLoader.loadClass动态加载类找不到;
  2. NoClassDefFoundError:Error,编译期类存在,运行期 class 文件缺失、依赖缺失。

八、OutOfMemoryError & StackOverflowError 成因

  1. StackOverflowError:虚拟机栈,无限递归无终止条件、方法调用层级过深,栈帧塞满;
  2. OutOfMemoryError:Java 堆,大量创建对象无法 GC 回收、内存泄漏、一次性加载超大批量数据。

总结

  1. 异常顶层父类为Throwable,分为不可处理的Error和可捕获处理的Exception
  2. throws声明异常、throw手动抛出异常;finally绝大多数情况执行,禁用 return;
  3. 类找不到分两种:手动加载异常ClassNotFoundException、运行时类丢失错误NoClassDefFoundError
  4. 栈溢出多是无限递归,堆溢出多是对象过多无法回收,是线上故障高频类型。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 22:06:15

机器人二次开发机器狗巡检?多源数据融合导航

行业痛点分析当前机器人二次开发面临“开发门槛高、周期长”与“算法泛化能力不足”两大共性难题。传统方案依赖人工标定与场景适配,微调即需重新部署,行业数据显示项目平均周期常超过6个月。同时,实验室模型在真实环境中性能骤降&#xff0c…

作者头像 李华
网站建设 2026/6/6 22:00:03

微信小程序图表可视化终极指南:ECharts-for-Weixin完整使用教程

微信小程序图表可视化终极指南:ECharts-for-Weixin完整使用教程 【免费下载链接】echarts-for-weixin 基于 Apache ECharts 的微信小程序图表库 项目地址: https://gitcode.com/gh_mirrors/ec/echarts-for-weixin 还在为微信小程序中数据可视化功能不足而烦恼…

作者头像 李华
网站建设 2026/6/6 21:58:01

STM32定时器入门:从基础定时到输出比较的实战指南

1. 从“头大”到“上手”:我的STM32定时器入门心路作为一名在嵌入式领域摸爬滚打了十多年的老工程师,我接触过不少微控制器,STM32系列以其强大的性能和丰富的生态,无疑是当前市场上的绝对主力。但说实话,第一次翻开STM…

作者头像 李华
网站建设 2026/6/6 21:52:19

手把手教你爬取贝壳找房新房楼盘数据:动态加载破解与反爬虫实战

一、前言:为什么要爬取贝壳找房? 在房地产数据分析领域,贝壳找房作为国内最大的房产交易服务平台,拥有最全面、最及时的新房和二手房数据。对于市场研究人员、房产投资者、数据分析师来说,获取贝壳找房的楼盘数据具有极高的商业价值。然而,贝壳找房采用了先进的动态加载…

作者头像 李华