当前位置: 首页 > news >正文

今日总结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)等。
http://www.lryc.cn/news/463892.html

相关文章:

  • React Agent 自定义实现
  • RabbitMQ 入门(六)SpringAMQP五种消息类型(Direct Exchange)
  • 2062:【例1.3】电影票
  • Python | Leetcode Python题解之第477题汉明距离总和
  • Leecode刷题之路第25天之K个一组翻转链表
  • nuxtjs3 使用tailwindcss做自适应
  • 数据资产目录构建方法与应用
  • 【Python爬虫实战】从文件到数据库:全面掌握Python爬虫数据存储技巧
  • 断其一指,无惧!ProFusion3D: 相机或者激光失效仍高效的多传感器融合3D目标检测算法
  • CCS字体、字号更改+CCS下载官方链接
  • YOLO11改进|注意力机制篇|引入SEAM注意力机制
  • 简历修订与求职经历 - Chap04
  • 鸿蒙开发案例:推箱子
  • mysql--表的约束
  • Ubuntu 上安装 docker 并配置 Docker Compose 详细步骤
  • MySQL去除空白字符(如非标准空格、制表符等)
  • 2063:【例1.4】牛吃牧草
  • QT开发:深入掌握 QtGui 和 QtWidgets 布局管理:QVBoxLayout、QHBoxLayout 和 QGridLayout 的高级应用
  • Bootstrapping、Bagging 和 Boosting
  • 板块龙头公司
  • Java项目-基于Springboot的招生管理系统项目(源码+说明).zip
  • 使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期
  • 【React】React18核心源码解读
  • 部署私有仓库以及docker web ui应用
  • DAY57WEB 攻防-SSRF 服务端请求Gopher 伪协议无回显利用黑白盒挖掘业务功能点
  • 光盘刻录大文件时分卷操作
  • Kafka系列之:生产者性能调优
  • 【linux】进程创建与进程终止
  • QT的文件操作类 QFile
  • java项目篇-用户脱敏展示