今日总结10.18

Exception 和Error 有什么区别

Exception和Error都是Java等编程语言中异常处理机制的重要组成部分,它们都继承自Throwable类。以下是两者的主要区别:

定义与性质

Error
1.表示严重的系统级错误,如内存溢出(OutOfMemoryError)、栈溢出(StackOverflowError)等。
2.这类错误通常由JVM(Java虚拟机)抛出,程序无法捕获或恢复。
3.Error是程序运行中不可预料的异常情况,发生后会导致JVM处于不可处理或不可恢复的状态。
Exception:
1.表示程序运行过程中的可预料或可处理的异常情况。
2.可以通过代码进行处理,如使用try-catch语句捕获异常并进行相应的处理。
3.Exception分为检查性异常(Checked Exception)和非检查性异常(Unchecked Exception,也称作运行时异常)。

处理方式

Error
1.由于Error通常表示严重的系统级问题,程序员通常不需要也不应该尝试处理这类错误。
2.当Error发生时,程序往往无法继续执行,需要进行相应的系统级处理或重启程序。
Exception:
1.对于检查性异常,程序员必须在编写代码时使用try-catch语句捕获,或者在方法签名中使用throws关键字声明。
2.对于非检查性异常,程序员可以选择捕获处理,也可以选择不捕获(但需要注意可能的程序崩溃风险)。
3.在捕获异常后,程序员可以进行相应的错误处理,如记录日志、清理资源、提示用户等。

应用场景

Error
1.主要应用于描述程序运行过程中遇到的严重系统级问题,如资源耗尽、系统崩溃等。
2.由于这些问题通常无法由程序自身解决,因此Error更多地被用于记录和分析程序崩溃的原因。
Exception
1.广泛应用于程序开发中的异常处理。
2.程序员可以通过捕获和处理异常来确保程序的健壮性和可靠性。
3.异常处理机制还允许程序员在方法签名中声明可能抛出的异常,从而提供额外的信息给方法的调用者。

Checked Exception 和Unchecked Exception 有什么区别

定义与继承关系

Checked Exception

1.继承自java.lang.Exception类,但不包括RuntimeException及其子类。
2.编译器强制要求程序员显式处理这些异常,即在可能出现受检查异常的方法签名中必须使用throws关键字声明该方法可能抛出的异常类型。

Unchecked Exception

1.继承自java.lang.RuntimeException类,或者直接继承自Error类。
2.编译器不强制程序员在方法签名中声明这类异常,即无需使用throws关键字。

处理要求

Checked Exception

1.程序员必须在编写代码时使用try-catch语句捕获受检查异常,或者在方法签名中使用throws关键字声明可能抛出的异常。
2.如果调用的方法可能会抛出受检查异常,那么调用者必须处理这个异常,否则编译器会报错。

Unchecked Exception

1.编译器不要求程序员强制处理非受检查异常。
2.如果非受检查异常没有被捕获,程序会终止执行(除非在全局默认的异常处理器中进行了特殊处理)。
3.非受检查异常通常用于指示编程错误或逻辑错误,如空指针异常(NullPointerException)、数组越界异常(ArrayIndexOutOfBoundsException)等。
相关推荐
奋进的芋圆2 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin2 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model20052 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉2 小时前
JavaBean相关补充
java·开发语言
提笔忘字的帝国2 小时前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
2501_941882483 小时前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
華勳全栈3 小时前
两天开发完成智能体平台
java·spring·go
alonewolf_993 小时前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹3 小时前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理
专注_每天进步一点点3 小时前
【java开发】写接口文档的札记
java·开发语言