
前言导读Java异常体系是项目容错、日志排查、代码健壮性设计的核心基础也是面试高频基础考点与生产落地刚需能力。多数开发者只会简单try-catch捕获异常不了解异常层级、分类差异、执行顺序、自定义异常规范线上项目常出现异常处理混乱、日志丢失、兜底逻辑缺失等问题面试也难以答出标准化思路。本篇完整梳理Java异常整体架构、异常分类、执行机制、关键字用法详解全局异常设计、日志规范、OOM与栈溢出等异常场景结合面试易错点与生产实战方案统一异常编码规范搞定面试考点与线上故障容错。一、Java异常整体层级架构 必考指数★★★★★Java所有异常与错误的顶层父类为Throwable分为两大分支Error错误、Exception异常二者本质区别与适用场景是面试基础必背考点。Error系统级错误JVM层面严重问题无法捕获、无法处理如OOM内存溢出、栈溢出、类加载失败属于系统致命故障Exception代码级异常程序运行时可预期、可捕获、可处理的问题分为受检异常与非受检异常二、受检异常与非受检异常 必考指数★★★★★1、非受检异常运行时异常继承RuntimeException编译期不强制校验运行时才抛出是开发中最常见异常。如空指针、数组越界、类型转换异常、算术异常均为代码不规范导致可通过代码优化规避。2、受检异常编译时异常直接继承Exception编译期强制要求处理必须try-catch捕获或throws抛出否则编译不通过。如IO异常、SQL异常、文件不存在异常属于外部环境问题无法完全规避必须手动处理。三、异常处理核心关键字与执行机制 必考指数★★★★1、五大关键字作用try包裹可能出现异常的代码块catch捕获并处理对应类型异常finally无论是否异常都会执行用于释放资源、关闭连接throw手动抛出单个异常对象方法内部throws方法声明抛出异常类型方法签名2、try-catch-finally执行顺序正常执行try执行完毕 → finally执行出现异常try异常中断 → catch捕获处理 → finally执行finally唯一不执行场景System.exit000退出虚拟机。四、生产级异常开发规范 必考指数★★★★禁止空catch块必须打印日志、记录异常信息精准捕获异常禁止直接捕获Exception避免掩盖未知异常重要资源必须放入finally关闭使用try-with-resources自动关闭资源更优雅业务场景自定义异常统一错误码、错误信息便于全局处理五、本篇高频面试真题必背1、Error和Exception的核心区别1、层级不同均继承ThrowableError是系统级错误Exception是代码级异常2、可处理性Error无法捕获处理Exception可捕获处理3、触发时机Error多为JVM资源故障Exception多为代码或外部环境问题4、常见场景Error包含OOM、栈溢出Exception包含空指针、IO异常、SQL异常。2、受检异常和非受检异常区别与场景1、受检异常编译期强制处理继承Exception多用于外部环境异常如IO、数据库异常2、非受检异常运行时抛出继承RuntimeException多为代码Bug导致如空指针、数组越界。开发优先通过代码优化规避运行时异常外部依赖异常主动捕获处理。3、finally一定会执行吗为什么不建议在finally写returnfinally并非绝对执行调用System.exit000退出JVM时不会执行。禁止在finally写returnfinally的return会覆盖try、catch的返回值屏蔽异常信息导致程序逻辑错乱、异常丢失隐蔽性极强属于严重编码不规范。 本篇章节小结本篇完整梳理了Java异常层级架构、异常分类、关键字执行机制、生产编码规范、异常避坑方案核心考点。重点掌握Error与Exception区别、受检非受检差异、finally执行规则、生产异常处理规范统一项目异常编码标准提升代码健壮性与容错能力能够快速排查线上异常日志搞定异常体系所有面试与生产问题。