讲师中心 微信公众号
AI工具推荐 视频效率加速

Java里异常和错误有什么区别_JavaException与Error对比说明

胖婷吖_9443

胖婷吖_9443

发布时间:2025-12-24 16:33:07

|

657人浏览过

|

来源于php中文网

原创

Exception表示程序可预见、可干预的意外情况,应通过逻辑处理或预防应对;Error表示JVM或系统严重故障,不可恢复,不应捕获。

java里异常和错误有什么区别_javaexception与error对比说明

Java里异常(Exception)和错误(Error)都继承自 Throwable,但它们代表的问题性质、可处理性、设计意图完全不同——不是程度轻重之分,而是“能否由程序逻辑应对”的根本区别。

核心定位不同:程序可控 vs 系统失控

Exception 表示程序在运行中**可能预见、可以干预**的意外情况。比如文件不存在、网络超时、数组下标越界。这些问题发生在应用逻辑层,JVM 认为开发者有能力通过重试、降级、提示或修正输入来恢复流程。

Error 表示 JVM 自身或底层环境出现的**严重故障**,如内存耗尽(OutOfMemoryError)、调用栈溢出(StackOverflowError)、类加载失败(NoClassDefFoundError)。这些不是代码写错了,而是运行环境已无法支撑当前任务,程序基本失去继续执行的条件。

编译检查机制不同:强制处理 vs 完全放行

Exception 分两类,处理要求明确:

立即学习“Java免费学习笔记(深入)”;

  • 检查型异常(Checked Exception):如 IOException、SQLException。编译器会强制你用 try-catch 捕获,或用 throws 声明抛出,否则编译失败。
  • 非检查型异常(Unchecked Exception):即 RuntimeException 及其子类,如 NullPointerException、ArithmeticException。编译器不强制处理,但建议通过逻辑校验提前规避,而非依赖捕获。

Error 全部是非检查型的,编译器从不干预。即使你写了 catch(Error e),编译也能通过,但这属于反模式——不是不能写,而是不该写。

实际处理策略不同:该捕就捕,该放就放

对 Exception:

  • 检查型异常一般要处理:打开文件失败时提供默认配置,数据库异常时回滚事务并记录日志。
  • 运行时异常优先靠预防:判空、校验参数、限制循环深度,而不是层层 try-catch。

对 Error:

  • 正常业务代码中不应捕获,捕获后也几乎无法做有意义的恢复操作。
  • 极少数场景(如监控系统、容器化部署的主入口)可捕获 Error 做统一日志、发送告警、优雅退出,但不能试图“修复”它。
  • 遇到 OutOfMemoryError,不是 catch 后继续跑,而是该扩容堆内存、优化对象生命周期、排查内存泄漏。

继承结构与典型例子

两者同属 Throwable 直接子类,无交集:

  • Exception 下常见子类:IOException、SQLException、ClassNotFoundException、NullPointerException、IllegalArgumentException
  • Error 下常见子类:OutOfMemoryError、StackOverflowError、NoClassDefFoundError、VirtualMachineError

简单记:Exception 是“程序出了岔子,还能拉一把”;Error 是“房子地基塌了,别修门锁了”。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

989

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3000

2023.10.25

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5967

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2548

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5967

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2548

2023.08.10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2785

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

3981

2023.08.14

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn