错误和异常的区别(Error vs Exception)

错误和异常的区别(Error vs Exception)
guibin.beijing@gmail.com

今天突然有朋友问了这样一个问题,"Error" 和 "Exception"之间有啥区别?我觉得挺有意思,但是似乎又不能脱口而出。查找了一番资料之后,稍微总结了一下。

1) error都是继承自父类java.lang.Error,而exception都继承自java.lang.Exception.
2) 再看看JDK中对于java.lang.Error和java.lang.Exception的解释。

[b]java.lang.Error[/b]: An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions. 即:Error是Throwable的子类,用于标记严重错误。[b][size=small]合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。
[/size][/b]
[b]java.lang.Exception[/b]: The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch. 即Exception 是Throwable的一种形式的子类,用于指示一种合理的程序想去catch的条件。[b][size=small]即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。[/size][/b]

3) Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).
[b]checked exceptions: [/b]通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。
[b]unchecked exceptions: [/b]通常是如果一切正常的话本不该发生的异常,但是的确发生了。比如ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。
因此,面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。

参考资料:
[url]http://www.coderanch.com/t/269746/java-programmer-SCJP/certification/Error-vs-Exception[/url]
[url]http://oss.org.cn/ossdocs/java/se/jdk6/docs/api/java/lang/Error.html[/url]
[url]http://oss.org.cn/ossdocs/java/se/jdk6/docs/api/java/lang/Exception.html[/url]
LinePhone3.2.7(android端最新版本) sip客户端 SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/ 立即下载

相关推荐

STM32H743 LAN8720网口配置避坑指南:用CubeMX v6.5.0快速搞定LWIP+FreeRTOS

本文详细介绍了使用CubeMX v6.5.0配置STM32H743与LAN8720网口的LWIP+FreeRTOS方案,涵盖硬件连接、时钟配置、ETH外设初始化及LWIP协议栈调优等关键步骤。特别针对常见陷阱提供解决方案,帮助开发者快速实现稳定网络通信,适用于嵌入式网络开发场景。

weixin_33739523的博客 356

Exception(异常) 和 Error(错误)区别解析

对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在Java中,错误通过Error的子类描述。

z2431435的博客 8188

Halcon和C#联合编程实现硬币识别(个人入门练习)

本人为机器视觉入门小白,自己突发奇想 1.图片数据来源和分析 2.HALCON实现 3.C#搭建界面框架 4.C#中嵌入HALCON代码,即联合编程 5.导出.exe文件,运行以及Debug 目标是这样的,在图片中识别出每种类型的硬币数量,然后计算出总钱数。先上结果,再细说过程。 C#界面和识别结果: 1.图片数据来源和分析 图片大小及格式均统一,拍摄的时候已经尽可能的去除了背景噪点,所以图像处理的要求并不很高(重点在于思路)。硬币区分原理本人代码采用直径范围来判断(也可以半径或区域面积,HALCON算子

Demobird的博客 3614

Exception和Error有什么区别

基本概念 首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。 Exception和Error体现了JAVA这门语言对于异常处理的两种方式。 Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。 Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不...

A___B___C的博客 4309

squirrel校园二手交易平台

squirrel校园二手交易平台 (适合寻找SSM项目练手的你。) 项目起源:   期末的课程设计,三人一组,我和两个舍友,一时起兴,决定做一个校园二手交易平台,一开始兴致与激情满满,可是后期时间上的冲突,让我们三个人对于这个项目有点累。   这个项目刚定题两天,BezosLee由于通过了360的网上在线笔试,收到了360公司的免费培训邀请,要去北京的360总部进行培训一周,值得庆...

K.SHI的博客 5万+

宜搭,高级认证实操2,FaaS连接器指导教程

找到FaasEntry.java将如下代码整体替换,注意引包。如图所示在util下新建EDSUtil.java代码如下。回到连接器界面点击右上角测试-->测试。连接器工厂-->新建FaaS连接器。保存-->前往云IDE开发。返回如图所示代码,部署成功。

2301_80286061的博客 3342

Java异常Exception、ParseException和Throwable的区别

开始描述区别的时候,我们先简单说下 异常的几个关键词try,catch,throw try { if (StringUtil.isNotBlank(uId)) { // 对会议清单表资源进行删除 sysMeetingMetService.delSysMeetingMetList(uId, user); msg = message("sysMeetingMet.delete", "[会议资料]删除成功!", new Object[0]); } else { msg

小码的博客 4018

IP-guard发布新版本4.87.2241.0

IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。

IP-Guard专栏 1526

【Go进阶】02 错误处理

目录 1. 错误处理 1.1. Error VS Exception 1.2. Error Type(错误类型) 1.2.1. Sentinel Error 1.2.2. Error types 1.2.3. opaque errors 1.3. wrap 2. 日志输出 1. 错误处理 1.1. Error VS Exception Error概述 对于真正意外的情况, 那些表示不恢复的程序错误; 例如索引越界, 不可恢复的环境问题, 栈溢出, 才使用panic; 对于其他错误情况

baidu_34170531的博客 310

22、常见加密哈希算法及安全机制解析

本文详细解析了多种常见加密哈希算法,包括SHA系列、RIPEMD、Tiger、HAVAL、Whirlpool等,涵盖其工作原理、安全性与性能对比。同时探讨了哈希攻击方式如预映像攻击和彩虹表,并介绍了盐、MAC、HMAC等防御机制。结合密码存储、消息完整性验证及区块链应用案例,分析了不同场景下的算法选择建议,并展望了哈希算法在创新、融合与标准化方面的未来发展趋势。

seed的博客 390

如何用matlab扫频法测考虑频率耦合的并网逆变器的序阻抗,如何实现?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1192

Java异常

异常的定义是指在程序的运行过程中所发生的不正常的事件,它会中断 正在运行的程序 异常就是有异于常态,和正常情况不一样,有错误出现。在java中,阻止当前方法或作用域的情况,称之为异常。 异常的分类 Error:是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryErro

m0_64005352的博客 685

【软考高级架构】论文范文17——论软件系统架构评估及其应用(ATAM)

软件系统架构评估是保障系统质量属性满足业务目标的关键环节,架构权衡分析方法(Architecture Trade-off Analysis Method,ATAM)作为一种主流的架构评估方法,通过场景识别、敏感点与权衡点分析、风险与非风险决策识别等系统化活动,能够在架构设计早期发现潜在问题,降低后期修改成本。本文以笔者主导的某省级智慧医疗平台架构评估项目为案例,围绕ATAM方法的应用展开论述。笔者担任系统架构师,负责组织评估团队、引导场景捕获、分析架构决策、识别风险与权衡点。

qq837993702的博客 490

第十二章 面向正确性与健壮性的软件构造

第十二章 面向正确性与健壮性的软件构造第十二章 面向正确性与健壮性的软件构造健壮性和正确性健壮性正确性比较评测健壮性和正确性外部观察角度内部观察视角(间接)Java中的错误和异常ErrorException抛出异常的方法创建异常类处理异常栈轨迹断言防止bug断言断言和异常pre-/post-condition防御性编程保护程序免受无效输入Barricade 设置路障The SpotBugs tool 第十二章 面向正确性与健壮性的软件构造 健壮性和正确性 健壮性 系统在不正常输入或不正常外部环境下仍能够

weixin_46228614的博客 693

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaSE---异常的经典面试题

在Java中throw和throws都是用来捕获异常的两个关键字。首先,它们在使用的位置上不同,throw出现在代码块,throw关键字允许程序员根据自己的代码逻辑去抛出异常对象或者一些自定义的异常对象,而throws关键字出现在函数头,throws后面跟的是异常类型,方法内部如果出现了多个异常,throws后面必须跟多个异常类型,之间用逗号隔开。

2302_80826557的博客 501

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java中Exception与Error的差异详解

在Java编程中,异常处理是确保程序健壮性和稳定性的重要机制。然而,很多初学者和部分开发者可能会对`Exception`和`Error`这两个概念产生混淆。本文将深入探讨`Exception`与`Error`的差异,通过代码示例帮助读者更好地理解它们的本质和使用场景。

2201_75353178的博客 1717

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java异常处理深度解析:从Exception到Error的完整指南

Java异常处理机制解析 本文系统讲解了Java异常处理体系的核心概念和实践方法。首先通过电商系统案例展示了异常处理的必要性,并对比了常见异常场景与对应的Java异常类型。随后详细解析了Java异常层次结构,包括Throwable、Error和Exception三大类,其中Error代表严重系统错误(如内存溢出),Exception则包含可恢复的程序异常。 文章重点区分了检查型异常(Checked Exception)和非检查型异常(Unchecked Exception): 检查型异常(如IOExcept

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 2865

Java的异常体系结构是怎样的?Error和Exception的区别?

Java异常体系通过分层设计实现了错误与异常的分类管理。Error强调系统级不可恢复问题,Exception则关注程序可处理的异常事件。理解二者的区别及处理机制,是编写健壮Java程序的核心能力之一。开发者需根据异常类型选择处理策略:对Checked异常进行显式处理,对Unchecked异常优化代码逻辑,而对Error则优先解决系统或资源问题。

破损的天堂鸟博客 1018

Exception 与 Error 的区别

在 Java 中,异常处理机制是非常重要的,它可以帮助程序处理各种可能发生的错误情况。方法 recursiveMethod()递归调用自身,导致栈溢出 StackOverflowError,程序崩溃。及其子类通常不需要(也不应该)被程序捕获,因为它们往往表示系统级问题,而不是程序逻辑错误。,通常是由于代码错误或外部问题(如文件未找到、数据库连接失败)引起的。在 Java 中,所有的异常和错误都继承自。类的子类,但两者有明显的区别。处理,否则代码无法通过编译。,比如内存溢出、栈溢出等。

x² 897

Error与Exception的区别

原文 Java语言要求java程序中(无论是谁写的代码)所有抛出(throw)的异常都必须是从Throwable派生而来。当然,实际的Java编程中,由于JDK平台已经为我们设计好了非常丰富和完整的异常对象分类模型。因此,java程序员一般是不需要再重新定义自己的异常对象。而且即便是需要扩展自定义的异常对象,也往往会从Exception派生而来。所以,对于java程序员而言,它一般只需要在它的顶

nicknailo博客 2111

异常,Exception vs Error

异常ErrorException处理异常finally 什么是异常? 在程序执行过程中发生了不正常的情况,称为“异常”。 异常的作用:增强程序的健壮性。 异常的存在形式:以类和对象存在。 Error Error继承父类Throwable。表示错误,不可处理的异常,一旦发生只能退出JVM。 Error是Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。 Exception Exception,可处理的异常。 Ex

hqqkkc的博客 303

java exception和error的区别,java中error和exception的区别

Error类和Exception类的父类都是throwable类,他们的区别是:Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异...

weixin_35144647的博客 211
上一篇: Java垃圾回收(java GC)
下一篇: Java NIO 入门(一)Input/output: 概述
Guibin
博客等级 码龄23年 45粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值