java核心技术学习笔记——Exception与error的区别

杨晓峰Java核心36讲学习笔记 最近在极客时间上订阅了Oracle首席工程师杨晓峰的Java核心技术36讲, 接下来会对每一课的学习: 记下学习笔记 有不懂的地方继续深入 一些思考或者总结。 下面从第一课开始,Exception和Error有什么区别。 Exception 和Error都继承自Throwable父类。 Error是指正常运行情况下,不太可能出现的情况,一旦Error发生一般都会导致程序处于非正常不可恢复的... 阅读详情

Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch) ,它是异常处理机制的基本组成类型。Exception和Error体现了Java平台设计者对不同异常情况的分类。Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。Error是指在正常情况下,不大可能出现的情况,绝大部分的Error都会导致程序(比如JVM自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 . OutOfMemoryError之类,都是Error的子类。Exception又分为可检查(checked)具常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。前面我介绍的不可查的Error,是Throwable不是Exception.不检查异常就是所谓的运行时异常,类似NullPointerException,ArraylndexOutOfBoundsException之类,通常是可以编码避免的逻辑错误,具根据需要来判断是否需要捕获,并不会在编译期强制要才

总结: 

  1. exception和error都继承了throwable
  2. exception是程序正常运行中可以预料的意外情况,error会导致程序处于非正常不可恢复状态。
  3. exception分为编译时异常和运行时异常,编译时异常必须捕获,运行时异常可以不捕获
  4. 我们应该从异常中恢复程序,不应该从错误中恢复程序

扩展:

 

尽量不要捕获类似Exception这样的通用异常,而是应该捕获特定异学

不要生吞(swallow)异常。所谓生吞异常就是捕获了异常不处理

try-catch代码影响JVM对代码的优化,所以能不用就不用,尽量不要用大的try包装整段代码

不要用异常控制代码流程

 

常见的问题:

NoClassDefFoundError和ClassNotFoundException有什么区别:

NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中对于错误和异常的处理是不同的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。

ClassNotFoundException的产生原因:

Java支持使用Class.forName()方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出ClassNotFoundException异常。解决该问题需要确保所需的类连同它依赖的包存在于类路径中,常见问题在于类名书写错误。另外还有一个导致ClassNotFoundException的原因就是:当一个类已经某个类加载器加载到内存中了,此时另一个类加载器又尝试着动态地从同一个包中加载这个类。通过控制动态类加载过程,可以避免上述情况发生。

NoClassDefFoundError产生的原因:

如果JVM或者ClassLoader实例尝试加载(可以通过正常的方法调用,也可能是使用new来创建新的对象)类的时候却找不到类的定义。要查找的类在编译的时候是存在的,运行的时候却找不到了。这个时候就会导致NoClassDefFoundError.造成该问题的原因可能是打包过程漏掉了部分类,或者jar包出现损坏或者篡改。解决这个问题的办法是查找那些在开发期间存在于类路径下但在运行期间却不在类路径下的类。

Java 中 Exception 和 Error 有什么区别? ![[Throwable.png]] 和 都是 类的子类(在 Java 代码中只有继承了 Throwable 类的实例才可以被 throw 或者被 catch)它们表示在程序运行时发生的异常或错误情况。总结来看: 表示可以被处理的程序异常, 表示系统级的不可恢复错误。详细说明:1)Exception:是程序中可以处理的异常情况,表示程序逻辑或外部环境中的问题,可以通过代码进行恢复或处理。常见子类有:、、、 等。 又分为 Checked Exception(编译期异常)和 Unchecked Except 阅读详情

相关推荐

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 527

ClassNotFoundException/NoClassDefFoundError出现原因及解决

NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中对于错误和异常的处理是不同的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。 ClassNotFoundException的产生原因: Java支持使用Class.forName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出ClassNotFoundExce

FirstMrRight的博客 2万+

GD32F303 ADC+DMA实战:用硬件过采样搞定多通道数据采集(附完整代码)

本文详细介绍了GD32F303系列MCU通过ADC+DMA结合硬件过采样技术实现多通道数据采集的实战方案。从硬件设计要点到软件配置全解析,包括时钟树配置、ADC模块初始化和DMA传输设置,提供了完整的代码示例和优化技巧,帮助工程师构建高精度、低功耗的数据采集系统。

weixin_30466039的博客 318

Java 中 Throwable和Exception的区别

Part 1 Java语言要求java程序中所有抛出(throw)的异常都必须是从Throwable派生而来。对于java程序员而言,它一般只需要在它的顶级函数中catch(Exception ex)就可以捕获出所有的异常对象。 所有异常对象的根基类是 Throwable ,Throwable从Object直接继承而来(这是java系统所强制要求的),并且它实现了 Serializable接口(这...

杨鑫newlife的专栏 2743

汽车氛围灯 PCBA 方案开发:从技术底层解析车载光效的核心逻辑

摘要: 车载氛围灯PCBA方案开发需兼顾性能与车规要求。主控芯片选型应关注运算能力、温度适应性和低功耗(如NXPS32K344、复旦微FM33FG065A)。电路防护需采用TVS二极管等组合设计,满足ISO7637-2浪涌防护标准。通信协议分层应用(CAN+LIN),调光需解决色准与温漂问题,动态灯效通过FIFO队列实现。开发中需进行温度循环、振动、EMC等可靠性测试,细节处理(如三防涂覆)至关重要。该领域开发需熟悉车规标准并积累实车经验。

2401_87454052的博客 1132

从Gotham到Foundry:拆解Palantir三大产品线,看它如何用‘本体’统一企业数据与AI

本文深入解析Palantir的三大产品线Gotham、Foundry和Apollo,揭示其如何通过独特的'本体'架构实现企业数据与AI的无缝融合。从国防情报到商业决策,Palantir的产品架构展现了强大的数据整合与AI赋能能力,为企业构建数字孪生提供革命性解决方案。

weixin_30823001的博客 321

java中exception和error有什么区别,运行时异常和一般异常有什么区别

1.exception和error都是继承了throwable类,在java中只有throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型 2.exception和error体现了java平台设计者对不同异常情况的分类。exception是程序正常运行中,可以预料的意外情况,并且应该被捕获,进行相应的处理 3.error是指在正常情况下,不大...

weixin_34378922的博客 141

基于C#的软PLC梯形图编辑器开发实战

本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。

weixin_28314575的博客 404

Java Exception和Error

Exception和Error都是集成Throwable类,在java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理的基本类型。 Exception和Error体现了java平台设计者对不同异常情况的分类。 Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。 Exception又可分为可检查异常和不可检查异常。可检查异常必须要在源代码中进行显示的捕获处理,这是编译检查的一部分。不可检查异常是运行时异常,像NullPointerException

hongmofang10的博客 329

KubeVela入门到精通-K8S多集群交付

KubeVela是一个功能强大、易于使用、高度可扩展的应用交付与管理平台。它基于Kubernetes和OAM 技术构建,通过开放应用模型(OAM)来作为顶层的抽像,提供了声明式部署、多集群/混合环境支 持、插件与扩展性、中心化管控以及易于使用与可观测性等特点。

小杨同学的博客 1269

【部署】OpenClaw版本降级实操(含全量卸载)

本文详细介绍了OpenClaw工具的降级与卸载方法。主要内容包括:1)通过npm安装指定版本的核心命令及国内镜像加速方案;2)两种卸载路径:CLI工具存在时的简易一键卸载(含交互式与非交互式命令)和手动分步卸载流程;3)CLI已删除但服务仍在运行时,针对macOS(launchd)、Linux(systemd)和Windows(计划任务)系统的具体清理步骤。文章特别强调了卸载前备份的重要性,并提供了不同安装方式(常规安装与源码克隆)的额外说明,确保用户能彻底清理所有组件。

海兰 3173

exception和error区别

exception和error都是继承throwable类,在java中只有throwable类型可以被throw或者被catch,它是异常处理机制的基本组成类型 error是指正常情况下,不大可能出现的,绝大多数error都会导致程序(比如jvm自身)处于非正常或者不可恢复的状态。比如说OutOfmemoryError exception分为可检查(checked)和不可检查(uncheck...

huskyui 233

EtherCAT主站SOEM -- 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 1996

杨晓峰-java核心技术36讲(学习笔记)-2讲 | Exception和Error有什么区别?

杨晓峰-java核心技术36讲(学习笔记) 接下来我会分享杨晓峰-java核心技术36讲的学习笔记,内容较多,补充了其中一些牛人评论,相对详细(仅供个人学习记录整理,希望大家支持正版:https://time.geekbang.org/column/intro/100006701) 2讲 | Exception和Error有什么区别? 请对比Exception和Error,另外,运行时异常与一般异常有什么区别? 典型回答 Exception和Error都是继承了Throwable类,在Java中只有Thro

niuyan666的博客 435

efm32 入门.pdf

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java异常Error和Exception的区别

异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。 这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。-要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常: 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个

iblade的博客 5万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java中Error与Exception的区别

当我们谈论编程中的错误(Error)和异常(Exception)时,通常会涉及到程序执行中可能出现的问题和如何处理这些问题的策略。本文将详细讨论这两者的区别和如何在代码中处理它们。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7079

Java中Error与Exception的区别

Error类和Exception类都继承自Throwable类。 Error的继承关系: Exception的继承关系: 二者的不同之处: Exception: 1.可以是可被控制(checked) 或不可控制的(unchecked)。 2.表示一个由程序员导致的错误。 3.应该在应用程序级被处理。 Error: 1.总是不可控

一转身就是一辈子 3万+

Exception和Error有什么区别

之前写了一个基础知识的文章,里边已经介绍了Exception和Error的区别,也介绍了异 常的使用规则,但是没有具体说一下在日常使用中的一个规范,有时,面试时会问到的一些 点。 本篇文章稍微梳理一下。 在日常代码编写过程中,肯定不会出现没有错误的程序,无错误的程序有可能会出现在“码农”的幻想中。我们在日常的开发中,异常的处理肯定是大家经常碰到的,但是碰到的时候,咱们是否能正确的把异常...

Monkey博客 4万+

JAVA中Error与Exception的区别——面试

Error(错误)和Exception(异常)的区别——面试

m0_66349763的博客 1673

【Java核心技术】Exception和Error的区别

Java语言在设计之初就提供相对完善的异常处理机制,这种机制大大降低了编写和维护可靠程序的门槛,如今异常处理机制已成为编程语言的标配 有两个问题: 对比Exception和Error 运行时异常与一般异常有什么区别? 一、典型回答 1.1 Exception和Error都继承Throwable类 在Java中只有Throwable类型的实例才可以被抛出throw或者捕获catch,它是异常处理机制的基本组成类型 1.2 不同异常情况的分类 Exception和Error体现Java平台设计者对不同异常情

sysu_lluozh 1197

Java面试-Java中的Exception和Error有什么区别?

Java中的Exception和Error有什么区别? 概念 Exception是程序正常运行中预料到可能会发生的错误,并且应该被捕获并进行相应的处理,是一种异常。 Error是正常情况下不可能发生的错误,会导致JVM处以一种不可恢复的状态 Exception分类 编译时异常(可检查异常Checked)表示编译器检测到这段代码在运行时可能会发生异常,要求我们对异常进行处理。 运行时异常(不可...

clonechen 6141

exception和error的区别

exception和error的区别? 以及我们的系统如何处理异常。

qq_33214327的博客 1294

Java Exception和Error有什么区别

在Java编程中,异常处理是一个核心概念,它允许程序员优雅地处理运行时出现的问题。Java使用两种主要类型的异常和错误来表示这些问题:Exception和Error。尽管它们都表示程序中的不正常情况,但它们在语义和用法上有很大的不同。在本文中,我们将深入探讨Java中的Exception和Error之间的区别。

让每一行代码都有改变世界的力量 806

Java核心技术面试精讲 第2讲 | Exception和Error有什么区别?

世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。Java语言在设计之初就提供了相对完善的异常处理机制,这也是Java得以大行其道的原因之一,因为这种机制大大降低了编写和维护可靠程序的门槛。如今,异常处理机制已经成为现代编程语言的标配。今天我要问你的问题是,请对比Exception和Error,另外,运行时异常与一般异常有什么区别?

牛牛 687

Error 与 Exception 区别

Exception 和 Error 都是继承了 Throwable 类,在 Java中 只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。 本文详细介绍了 Exception 和 Error 的区别。

LeifChen的博客 532

JAVA中ERROR和Exception区别

异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。 这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。- 要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常: 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在...

ailaojie的博客 1557
上一篇: 微服务架构学习笔记
下一篇: Java核心技术学习笔记——final, finally,finalize
刘彦青-Yannis
博客等级 码龄10年 1万+粉丝 234原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘彦青-Yannis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值