【从零开始学习JAVA | 第三十一篇】异常体系介绍

news2024/10/1 19:32:34

前言:

        本文我们将为大家介绍一下异常的整个体系,而我们学习异常,不是为了敲代码的时候不出异常,而是为了能够熟练的处理异常,如何解决代码中的异常。

异常的两大分类:

 我们就以这张图作为线索来详细介绍一下Java中的异常:

1.Exceptions(异常)

在Java中,Exception(异常)是一种表示非致命错误或异常情况的类或接口。Exception通常是由应用程序引发的,可以被程序员捕获、处理或抛出。

Exception再分为两种类型:可检查异常(checked exception)非检查异常(unchecked exception)。

1. 可检查异常(Checked Exception):

  •     可检查异常在编译时就需要进行处理,否则编译器会报错。
  •     可检查异常通常表示程序可以预见和处理的异常情况。
  •     可检查异常必须通过try-catch语句块或者在方法签名中使用throws关键字进行处理。
  •     常见的可检查异常有IOException、SQLException等。

2. 非检查异常(Unchecked Exception):

  •     非检查异常在编译时不需要进行处理,程序员可以选择捕获和处理这些异常。
  •     非检查异常通常表示程序中发生的错误或逻辑错误。
  •     非检查异常不需要强制在代码中进行处理,但程序员可以自行处理。
  •     常见的非检查异常有NullPointerException、ArrayIndexOutOfBoundsException等。

Java中的异常处理机制使用try-catch-finally语句块来捕获和处理异常,并提供了一种结构化的方式来处理各种异常情况。在try块中编写可能会出现异常的代码,catch块中捕获并处理异常,finally块中编写无论是否出现异常都要执行的代码。

除了try-catch-finally,还可以使用throws关键字在方法签名中声明方法可能抛出的异常,以便调用该方法的代码能够适当处理异常。

总之,Exception是Java中用于表示各种非致命错误或异常情况的类或接口。通过Java的异常处理机制,程序员可以对可能发生的异常进行捕获、处理、抛出或传递,以保证程序的健壮性和可靠性。

在Java中,Error是指表示严重错误或系统异常的一种特殊类型的异常。与普通的异常(Exception)不同,Error通常是无法被程序员捕获或处理的,而是由Java虚拟机(JVM)自动处理。

2.Error(错误)

Error表示的是Java运行时环境发生了一些严重的问题,如虚拟机错误、内存溢出、线程死锁等,这些问题一般是由于系统级错误或者虚拟机的内部错误造成的。一旦发生Error,通常意味着程序的执行已经无法继续进行下去,因此它们被认为是致命的,不可恢复的错误。

常见的Error包括:

1. OutOfMemoryError:表示内存溢出错误,当程序需要的内存超过了虚拟机可提供的内存限制时,会抛出该错误。一般分为`HeapSpace`(堆内存)和`Metaspace`(元空间)两种类型。

2. StackOverflowError:表示栈溢出错误,当方法调用的深度超过栈的最大限制时,会抛出该错误。

3. NoClassDefFoundError:表示找不到类定义错误,当虚拟机或类加载器无法找到某个类的定义时,会抛出该错误。

4. LinkageError:表示链接错误,当在类的连接阶段发生问题时,会抛出该错误。如版本不匹配、依赖关系错误等。

虽然程序员在一般情况下不会对Error进行捕获和处理,但它们的存在是为了提醒程序员可能存在严重问题,或者在程序无法继续执行时提供适当的错误信息。通常情况下,当程序出现Error时,Java虚拟机会终止程序的运行,并输出错误信息。

需要注意的是,在开发中,程序员应当关注并避免由于编码错误或逻辑错误导致的各种异常和错误,尽可能编写健壮的代码,同时在必要的情况下对可能发生的异常进行适当的处理,以提高应用程序的稳定性和可靠性。

总结:

        本文我们介绍了两个常见的内容:一个是Error(错误),一个是Exception(异常)。而Error属于系统级别的错误,我们一般是不需要对其进行捕获和处理的,这是JAVA开发公司SUN需要进行修正的地方,而Exception是我们需要关注的异常,他又分为两大子类,我们也不需要详细记忆,只需要记忆一个大概的框架就好了。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud【SkyWalking日志、SkyWalking告警 、Skywalking自定义告警规则】(十五)

目录 分布式请求链路追踪_SkyWalking日志 分布式请求链路追踪_SkyWalking告警 分布式请求链路追踪_Skywalking自定义告警规则 分布式请求链路追踪_SkyWalking日志 POM中引入相关依赖 Skywalking8.4.0版本开始才支持收集日志功能&#xff0c;同时pom需引用以下依赖。 <…

如何理解教育数字化转型?

一、教育数字化转型 教育数字化转型是指将传统的教育方式和教学方法通过应用数字技术进行改进和创新&#xff0c;实现教育过程的数字化、网络化、智能化。它包括利用数字技术改变教育内容的呈现方式、改变组织方式、改变评估和反馈方式。 教育数字化的目的是为了提高教育的效率…

KubeVela篇06:Kubevela Addon插件安装原理

addon支持从本地、git仓库、helm chart仓库安装,最终原理都相同,因此我们以本地安装为例。 完整流程如下: 从指定目录读取一个完整的addon安装包。 根据metadata.yaml配置文件,校验插件要求的kubevela、k8s的版本,不满足版本要求则终止安装。 根据metadata.yaml配置文件…

MS VC 2022开发Linux应用记录之02篇-开发调试Linux QT应用

MS VC 2022开发Linux应用记录之02篇 1. 安装QT5 apt-get update apt-get install build-essential apt-get install qtcreator apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools apt-get install qtcreator apt-get install qt5* apt-get install li…

LeetCode 热题 100(三):普通数组。53. 最大子数组和、 56. 合并区间、189. 轮转数组、238. 除自身以外数组的乘积

一、题目一&#xff1a; 53. 最大子数组和 题目要求&#xff1a; 思路&#xff1a;贪心算法。 求每个区间的和。 局部最优&#xff1a;当前“连续和”为负数的时候立刻放弃&#xff0c;从下一个元素重新计算“连续和”&#xff0c;因为负数加上下一个元素 “连续和”只会越…

硬件系统工程师宝典(33)-----EEPROM电路如何设计?

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。 上篇我们了解了嵌入式应用中应用领域不同&#xff0c;所采用的CPU也不同&#xff0c;不过CPU部分电路的设计过程都较为相似。并且&#xff0c;我们…

抖音seo源码开发技术解析

抖音seo矩阵系统源码开发部署基于PHP语言&#xff0c;结合视频剪辑基础框架逻辑&#xff0c; 一、 抖音SEO源码开发技术解析主要包括以下内容&#xff1a; 抖音SEO的概念&#xff1a;简单介绍抖音SEO的概念、作用和流程。 SEO优化技巧&#xff1a;详细讲解SEO优化的技巧&…

C++ - list介绍 和 list的模拟实现

list介绍 list 是一个支持在常数范围内&#xff0c;任意位置进行插入删除的序列式容器&#xff0c;且这个容器可以前后双向迭代。我们可以把 list 理解为 双向循环链表的结构。 于其他结构的容器相比&#xff0c;list在 任意位置进行插入和函数的效率要高很多&#xff1b;而li…

JavaScript:Promise 组合器

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Promise在 JavaScript 中并不是一个新概念。它们是表示异步操作的最终完成或失败及其结果值的对象。 Promise 有三种可能的状态&#xff1a;pending – 初始状态&#xff08;仍在等待&#xff09;、已完成– Promis…

[NLP]使用Alpaca-Lora基于llama模型进行微调教程

Stanford Alpaca 是在 LLaMA 整个模型上微调&#xff0c;即对预训练模型中的所有参数都进行微调&#xff08;full fine-tuning&#xff09;。但该方法对于硬件成本要求仍然偏高且训练低效。 [NLP]理解大型语言模型高效微调(PEFT) 因此&#xff0c; Alpaca-Lora 则是利用 Lora…

Qt6 Qt Quick UI原型学习QML第七篇

文章目录 效果演示QML语法 ClickableImageV2.qmlQML语法 EasingCurves.qml时钟小球滚动QML 源码## 时钟小球滚动QML解释 语法解释参考动画片动画元素应用动画可点击图像V2上升的物体第一个对象第二个对象第三个对象缓和曲线分组动画并行动画连续动画嵌套动画 效果演示 QML语法 …

给APK签名—两种方式(flutter android 安装包)

前提&#xff1a;给未签名的apk签名&#xff0c;可以先检查下apk有没有签名 通过命令行查看&#xff1a;打开终端或命令行界面&#xff0c;导入包含APK文件的目录&#xff0c;并执行以下命令&#xff1a; keytool -printcert -jarfile your_app.apk 将 your_app.apk替换为要检查…

MybatisPlus查询条件为空字符串或null问题及解决

参考&#xff1a;https://www.yii666.com/blog/292928.html 解决办法 mybatisplus的条件构造器方法 eq()、like()等这些方法能支持第三个参数 condition condition是一个布尔值&#xff0c;当condition为false 时&#xff0c;当前这个条件方法不会生效&#xff0c;即生成的s…

曲线拟合曲面拟合(MATLAB拟合工具箱)位置前馈量计算(压力闭环控制应用)

利用PLC进行压力闭环控制的项目背景介绍请查看下面文章链接,这里不再赘述。 信捷PLC压力闭环控制应用(C语言完整PD、PID源代码)_RXXW_Dor的博客-CSDN博客闭环控制的系列文章,可以查看PID专栏的的系列文章,链接如下:张力控制之速度闭环(速度前馈量计算)_RXXW_Dor的博客-CSD…

flash attention 2论文学习

flash attention作者Tri Dao发布了flash attention 2&#xff0c;性能为flash attention的2倍。 优化点主要如下&#xff1a; 一、减少 non-matmul FLOPs A00中由于tensor core的存在&#xff0c;使得gpu对于浮点矩阵运算吞吐很高&#xff0c;如FP16/BF16可以达到312 TFLOPs/…

【弹力设计篇】聊聊熔断设计

为什么需要熔断 熔断这个词一听从生活中就是保险丝超过一定的温度后自动断开&#xff0c;以此来保护家用电器&#xff0c;属于电路中自我保护装置。如果没有熔断&#xff0c;那么家用电器一定会损坏的。 进一步再来分析一下&#xff0c;在分布式系统中&#xff0c;各个系统之间…

建立TCP连接的各个系统调用

TCP 连接的过程图 服务器 socket() 函数 socket() 返回的 sockfd 是一个描述符。socket()对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字&#xff0c;而socket()用于创建一个socket描述符&#xff08;socket descriptor&#xff09;&#xff0c;它唯一标识…

PX4仿真jMAVSim没有界面

切换java版本,使用java-8 sudo update-alternatives --config java删除旧文件 rm -rf Tools/jMAVSim/out编辑accessibility.properties 文件&#xff1a; sudo gedit /etc/java-8-openjdk/accessibility.properties注释掉下面这行 #assistive_technologiesorg.GNOME.Acessi…

笔试题:统计字符串中某字符串在其出现的字符个数

笔试题&#xff1a;统计字符串中某一子串的字符个数&#xff1a;例如字符串aabbcd,有aabb:4,ab:2 哈哈&#xff0c;这道题是小编面试音视频龙头企业的笔试题&#xff0c;以下是我写的代码&#xff1a;如果有错误&#xff0c;希望可以指正!!! 解题思路&#xff1a;利用双指针i和…

一刷总结篇

也养成了记录博客的好习惯吧&#xff0c;不过一刷有时也偷懒没跟上&#xff0c;但总体而言是比没刷代码随想录之前的状态要好。还是要记得当前目标是什么&#xff08;深抓主要矛盾&#xff09;。二刷代码随想录时每题要充分思考并且刷之前放过的题&#xff08;如扩展提等&#…