Java异常详解大全(2023版)

Java异常详解

  • 异常分类
    • 1.Throwable
    • 2. Error(错误)
    • 3. Exception(异常)
      • 3.1 运行时异常 RuntimeException
      • 3.2 编译时异常(受检查异常)ClassNotFoundException + IOException
    • 4.常见的运行时异常
    • 5.异常如何处理
      • Java 的异常处理是通过 5 个关键词来实现的:try、catch、throw、throws 和 finally。
      • 5.1异常关键字
      • 5.2 异常处理方法
        • 5.2.1 声明异常 throws关键字 (不能处理Error和运行时异常)
        • 5.2.2 抛出异常 throw关键字 一般放在方法体里面
        • 5.2.3 捕获异常 try/catch/finally关键字 (经常用来处理运行时异常)
        • 5.2.4 自定义异常
        • 5.2.5 最佳实践
          • 1. 优先捕获最具体的异常类,将不太具体的 catch 块添加到列表末尾
          • 2. 在 finally 块中清理资源
          • 3.优先明确异常
    • 6.try、catch、finally使用

异常分类

在这里插入图片描述

1.Throwable

概念:Throwable 是 Java 语言中所有错误与异常的超类。(详细如上图所示)

  • Throwable 包含两个子类:Error(错误)和 Exception(异常)
  • Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。

2. Error(错误)

定义: 发生时候应用程序是不会处理此类错误的

Error 类及其子类是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。

特点:

此类错误一般表示代码运行时 JVM 出现问题。

  • 通常有 Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。

  • 比如 OutOfMemoryError:内存不足错误;StackOverflowError:栈溢出错误。此类错误发生时,JVM 将终止线程。

总结:

这些错误是不受检异常,非代码性错误。因此,当此类错误发生时,应用程序不应该去处理此类错误。按照Java惯例,我们是不应该实现任何新的Error子类的!

3. Exception(异常)

Exception是程序本身可以捕获并且可以处理的异常

Exception 这种异常又分为两类:运行时异常 和 编译时异常

受检异常除 RuntimeException 及其子类外,其他的 Exception 异常都属于受检异常

非受检异常该类异常包括运行时异常(RuntimeException极其子类

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

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

相关文章

Uber Go 语言编码规范

uber-go/guide 的中文翻译 English 文档链接 Uber Go 语言编码规范 Uber 是一家美国硅谷的科技公司,也是 Go 语言的早期 adopter。其开源了很多 golang 项目,诸如被 Gopher 圈熟知的 zap、jaeger 等。2018 年年末 Uber 将内部的 Go 风格规范 开源到 G…

人工智能学习6(贝叶斯实现简单的评论情感分析)

编译工具PyCharm 文章目录 编译工具PyCharm 文本分析与表示实现方式:文本表示方法文本相似度计算LDA主题模型 朴素贝叶斯算法应用:评论情感分析,工具评论分析是好评还是差评获取数据加载停用词内容标准化(将每一句话划分成一个个的…

四通道轨-轨运算芯片 D8054,外围应用简便,低功耗2.3mA (典型值)运放供电电流

D8054是一款四通道轨-轨运算放大器,外围应用简便,价格低廉。封装形式为SOP14,TSSOP14, SOP16, TSSOP16。 主要特点: ● 轨-轨输出,输出失调2mV (典型值) ● 高速250MHz,-3dB带…

HNU-电路与电子学-2018期末A卷(含标准解析)

【写在前面】 电路与电子学好像是从2020级开设的课程,故实际上目前只有2020与2021两个年级考过期末考试。 这门课程主要由所谓的“数电”与“模电”组成。而且先学的“模电”后学的“”数电,故期中考试主要以“模电”为主,期末考试主要以“数…

“上云”还是“下云”?探云计算的下一站未来!

引言 10 月 27 日,X(原Twitter)工程技术发布帖子称,在过去的一年里,技术团队优化了 X 的云服务使用方式,着手将更多工作负载迁往本地基础设施。这一转变使 X 每月的云成本降低了 60%。所有媒体、Blob 存储均…

[全志]更新bootlogo分区数据从而更新bootlogo

一、需求 在不进行镜像烧录的情况下,通过启动项或脚本将已存在于主板的bootlogo文件更新到bootlogo分区中,从而实现bootlogo的更新 二、操作 1、在主板上查找bootlogo文件路径 find -name bootlogo* 实机效果: 2、进入文件夹路径 cd ./d…

视频剪辑方法:AI智剪高效稳定,视频批量处理有技巧

随着社交媒体的兴起和视频制作工具的普及,视频剪辑已经成为一项重要的工作。然而对于许多非专业创作者来说,视频剪辑可能是一项困难的任务。所幸AI智剪提供了一种高效稳定的视频剪辑方法,使得视频批量处理变得更加简单。使用AI智剪可以大大节…

派对的最大快乐值

与其明天开始,不如现在行动! 文章目录 派对的最大快乐值 💎总结 派对的最大快乐值 题目 员工信息的定义如下: 公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、没有环的多叉树。树的头节点是公…

蓝桥杯物联网竞赛_STM32L071_10_温度传感器扩展模块

原理图: 温度传感器原理图: 其中芯片可以通过SCL和SDA引脚通过I2C通信向温度传感器指定地址获取温度的模拟量 再利用公式将模拟量转换成相应温度即可 实验板接口原理图: 模拟量转相应温度公式: CubMx配置: Keil配置&…

Ribbon 负载均衡

1、负载均衡整体流程 2、负载均衡流程逐级跟踪运行 (1) LoadBlanced 注解可以使LoadBalancerInterceptor拦截到; (2)LoadBalancerInterceptor 实现了ClientHttpRequestInterceptor接口; (3)ClientHttpRequestInterceptor接口释义如下; (4)int…

金和OA saveAsOtherFormatServlet接口任意文件上传漏洞复现 [附POC]

文章目录 金和OA saveAsOtherFormatServlet接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 金和OA saveAsOtherFormatServlet接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责…

TIA博途中快速修改变量值的方法和技巧

TIA博途中快速修改变量值的方法和技巧 如下图所示,正常情况下选中该变量,然后右击选择“修改”—然后选择修改为0或1, 快速调试技巧: 如下图所示,鼠标选中该变量上方的“FALSE”,直接双击,系统会提示是否进行切换该变量的值, 点击“是”即可切换变量的值, 如下图所示,…

第三期丨酷雷曼无人机技能培训

第3期无人机技能提升培训 2023年9月15日,第三期酷雷曼合作商无人机技能提升培训圆满举办,数十位来自各地的合作商齐聚北京,在酷雷曼总部的帮助下学习无人机理论及实操知识,并成功取得权威认可的无人机飞行执照。本届培训会的新晋…

发明无止境:简单的螺丝钉也有复杂悠久的专利故事?

今天跟大家分享一个螺丝钉专利的故事。 我们从人类开始就有了连接和固定的需求。 最早期的时候,人类就想到了连接和固定最简单的办法就是用钉子把两个物体连接在一起,最早的时候用的是木钉或者楔子。用木钉和楔子的方式简单粗暴,成本也非常的…

【Linux】more命令使用

more 是linux的一个命令,类似cat命令,会以一页一页的显示,方便使用者逐页阅读。 More是一个过滤器,用于一次一屏地对文本进行分页。这个版本特别原始。用户应该意识到,less(1)提供了更多的模拟…

修改TV app卸载页面选中样式(GuidedStepFragment)

1.源码位置 packages\apps\PackageInstaller2.解决方案 1.继承Theme.Leanback.GuidedStep <style name"Theme.Settings.GuidedStep" parent"style/Theme.Leanback.GuidedStep"><item name"guidedStepBackground">color/settings_…

百度APP iOS端包体积50M优化实践(七)编译器优化

一. 前言 百度APP iOS端包体积优化系列文章的前六篇重点介绍了包体积优化整体方案、图片优化、资源优化、代码优化、无用类优化、HEIC图片优化实践和无用方法清理&#xff0c;图片优化是从无用图片、Asset Catalog和HEIC格式三个角度做深度优化&#xff1b;资源优化包括大资源…

字符串和内存函数(1)

strcat函数 如上图&#xff0c;strcat函数就是将一个字符串拼接在另一个字符串后面&#xff0c;第一个参数是目标字符串&#xff0c;第二个参数是源字符串&#xff0c;strcat的返回值是目标字符串的起始地址。 注意&#xff1a;1.目标空间必须足够大&#xff0c;还需要可以修改…

λ表达式、智能指针

lambda 表达式 1、C11标准支持&#xff0c;实现匿名函数的功能&#xff1b; 2、通常用于实现轻量级的函数 格式 mutable->返回值{函数体}; // 返回值即使是 void 也必须得写 [] 内&#xff0c;可以填外部数据&#xff1b; () 内&#xff0c;可以带有参数列表。 lambda 表达…

机器学习实验二:决策树模型

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…