Java—异常体系

news2024/11/14 14:34:13

文章目录

  • 异常和错误
  • java异常的分类:
    • 非运行时异常
    • 运行时异常
  • 受检异常(非运行时异常)如何处理?
    • 1、try catch finally
      • 为什么要用try catch finally
    • 2、throws
  • Throw和Throws的区别
  • JVM是如何处理异常的
  • try-catch-finally中哪个部分可以省略

————————————————————————————————

异常和错误

下面这就是异常(exception)
在这里插入图片描述
错误:(Error)是JVM产生和抛出的,一般情况下在编译器上看不到错误
下面这种就是Error(这个是栈溢出)
在这里插入图片描述

java异常的分类:

java异常可以分为:受检异常(非运行时异常)、非受检异常(运行时异常)

非运行时异常

受检异常(非运行时异常)
——>(代码从语法角度必须处理的异常,如果不处理,程序不能编译)
——>在编译器当中报错,需要我们解决该异常才能继续执行
非运行时异常(受检异常) :是RuntimeException以外的异常,类型上都是属于Exception类,这些异常必须处理。
常见受检异常:SQLException(访问关系数据库产生的异常),IOException(在读取文件时产生的异常),ClassNotFoundException(试图使用一个不存在的类),或者程序员自定义的异常。

运行时异常

非受检异常(运行时异常)
——>(代理的逻辑错误产生的)
——>在编译器当中不报出异常,在程序运行阶段报出异常
运行时异常(非受检异常) :都是由RuntimeException类(—>是Exception的一个子类)或者其子类产生的,这些异常程序可以选择处理,或者选择不处理。
常见非受检异常:NullPointerException(空指针访问),IndexOutOfBoundsException(数组角标越界),ArithmeticException(数学运算中除以0的情况),IIIegalArgumenException(传递给方法的参数非法或不合适)
在这里插入图片描述
在这里插入图片描述

受检异常(非运行时异常)如何处理?

1、try catch finally

try:尝试运行
catch:运行不成功,触发
finally:一定会执行的代码(不管是成功还是失败)

  • finally:无论try是否成功,finally一定会执行
  • finally通常来做资源清除工作,并比如关闭文件等等

为什么要用try catch finally

为了:解决异常:一旦使用了try…catch,那么即使出现异常,后续代码也能继续执行代码
在这里插入图片描述

2、throws

抛出异常,表示该方法不处理这个异常,交给 该 方法的调用者 去处理此异常(main方法处理此异常)
throw——自定义异常的关键字
在这里插入图片描述
注意:
JDK所抛出的所有的异常的父类都是Expectation类

Throw和Throws的区别

Throws:

  • 用来声明一个方法可能产生的所有异常,不能做任何处理而是将异常往上传,谁调用就抛给谁
  • 用在方法声明后面,跟的是异常类名
  • 可以跟多个异常类名,用逗号隔开
  • 可以抛出异常,由该方法的调用者来处理
  • 表示出现异常的一种可能性,并不一定会发生异常

Throw:

  • 抛出的是一个具体的异常类型
  • 用在方法体内,跟的是异常的对象名
  • 只能抛出一个异常对象名
  • 表示抛出异常,由方法体内的语句处理
  • throw抛出了异常,执行,throw则一定会抛出某种异常

JVM是如何处理异常的

在一个方法中如果发生异常,这个方法会创建一个异常对象,并转交给JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并转交给JVM的过程称为抛出异常。可能 有一系列的方法调用,最终才进入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。

JVM会顺着调用栈去查找看是否有可以处理异常的代码,如果有,则调用异常处理代码。当JVM发现可 以处理异常的代码时,会把发生的异常传递给它。如果JVM没有找到可以处理该异常的代码块,JVM就 会将该异常转交给默认的异常处理器(默认处理器为JVM的一部分),默认异常处理器打印岀异常信息 并终止应用程序。

try-catch-finally中哪个部分可以省略

try只适合处理运行时异常,try+catch适合处理运行时异常 +普通异常。也就是说,如果你只用try去处理普通异常却不加以catch处理,编译是通不过的,因为编译 器硬性规定,普通异常如果选择捕获,则必须用catch显示声明以便进一步处理。而运行时异常在编译时没有如此规定,所以catch可以省略。

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

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

相关文章

项目管理逻辑:项目经理如何掌控项目生命周期, 才能避免身心俱疲?

目录 1.项目生命周期 2.预测型项目周期 3.迭代型项目周期 3.1.初始阶段 3.2.精化阶段 3.3.构建阶段 3.4.交付阶段 4.增量型生命周期 5.敏捷开发 5.根据具体项目使用合理的开发方式 1.项目生命周期 2.预测型项目周期 预测型项目周期就是软件开发领域的瀑布流模型&…

【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)

觉得有帮助或有疑问麻烦点赞关注收藏后评论区私信留言~~~ 一、句法分析 句法分析(syntactic parsing或者parsing)是识别句子包含的句法成分要素以及成分之间的内在关系,一般以句法树来表示句法分析的结果。实现该过程的应用称作句法分析器&a…

三维模型的简化算法研究(任务书+lunwen+外文翻译+源码+查重报告)

目 录 第1章 绪论 1 1.1 研究背景 1 1.2 内存网格简化算法 1 1.2.1 顶点聚类 1 1.2.2 区域合并 2 1.2.3 迭代式消除 4 1.2.4 随机重采样 5 1.3 三维模型简化算法 6 1.3.1 分片简化 6 1.3.2 使用外部数据结构 7 1.3.3 网格批处理 9 1.3.4 流式简化 10 1.3.5 小结 11 1.4 自适应等…

【前沿技术RPA】 一文了解UiPath Orchestrator的触发器和监听器

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:UiPath 🦀专栏简介:UiPath在传统的RPA(Robotic…

公众号接口免费调用

公众号接口免费调用 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 题库:题库后台(点击跳转)…

Express:CORS 跨域资源共享

CORS 跨域资源共享 Staticfile CDN 1. 接口的跨域问题 刚才编写的 GET 和 POST接口,存在一个很严重的问题:不支持跨域请求。 解决接口跨域问题的方案主要有两种: 1.CORS(主流的解决方案,推荐使用) 2.J…

Excel - 选择性粘贴和单元格引用规则

最基本的功能,才是最重要的功能,一定好好好理解。 最常用的复制、粘贴功能,在Excel里赋予了更多的选项,也变得更加强大。Excel里一般可复制的内容都是只单元格区域,其组成包括数据(文本或数值)、格式、公式、有效性验证…

FileZilla Server.xml 如何配置

要从xp.cn说起,因为它自带了一个ftp服务器。我点击配置后,就会直接用记事本打开FileZilla Server.xml让配置。我就很懵。不知道如何下手。 弹出的配置界面如下: 如何配置FileZilla Server.xml 我一开始想到去xp.cn找文档,可惜…

初探基因组组装——生信原理第四次实验报告

初探基因组组装——生信原理第四次实验报告 文章目录初探基因组组装——生信原理第四次实验报告实验目的实验内容实验题目第一题题目用SOAPdenovo 进行基因组组装评估组装质量第二题题目Canu组装Hifiasm组装基于nucmer的基因组比对过滤比对结果转换为可读性强的tab键分隔的文件…

期末论文LaTeX模板

简介 这学期的其中一门课程结束了,考核形式是写一篇中文的课程论文。于是,我使用了Elegant LaTeX 系列的模板。 小编已经把最新版本的三份模板放到公众号,后台回复[课程论文模板]即可获取。也欢迎大家去 GitHub 给贡献者点 star!…

【从零开始玩量化13】quantstats:分析你的量化策略

背景 之前总结了一些获取量化数据的途径,数据是一个量化策略的“原材料”,接下来要考虑的问题就是如何使用这些数据。 本文,介绍一个量化指标分析工具quantstats,利用它可以很方便的分析你的策略。 Github地址:https…

[附源码]计算机毕业设计校园帮平台管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【5G MAC】随机接入流程中的 Msg3 —— Scheduled UL (PUSCH) Transmission

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

机器学习數據降維之主成分分析(PCA)

文章目录前言数据降维是什么?维度灾难与降维作用主成分分析PCA原理PCA算法小例實戰總結前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容…

cubeIDE开发,结合汉字取模工具,在LCD输出各种字体

一、汉字取模工具 嵌入式LCD屏显示无非就是不间断刷新LCD宽度*LCD高度的像素矩阵,并为每个像素指定特定颜色。对于LCD屏幕显示汉字,无非就是将字体形状转换为字体宽度*字体高度的像素矩阵,及指定每个字体像素的颜色,然后在LCD屏幕…

点击试剂Methyltetrazine-PEG4-NHS ester,甲基四嗪-PEG4-琥珀酰亚胺酯,CAS:1802907-9

An English name:Methyltetrazine-PEG4-NHS ester Chinese name:甲基四嗪-四聚乙二醇-琥珀酰亚胺酯 Item no:X-CL-1328 CAS:1802907-92-1 Formula:C24H31N5O9 MW:533.54 Purity:95% Avai…

基于MCMC的交通量逆建模(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

《人类简史》笔记四—— 想象构建的秩序

目录 一、盖起金字塔 1、未来的来临 2、 由想象构建的秩序 3、如何维持构建的秩序 二、 记忆过载 三、亚当和夏娃的一天 一、盖起金字塔 1、未来的来临 原始社会: 人口少; 狩猎和采集; 整体活动范围大(有几十甚至上百平方…

【怎么理解回流与重绘?以及触发场景】

一、是什么 在HTML中,每个元素都可以理解成一个盒子,在浏览器解析过程中,会涉及到回流与重绘: 回流:布局引擎会根据各种样式计算每个盒子在页面上的大小与位置 重绘:当计算好盒模型的位置、大小及其他属性…

初学Nodejs(5):npm包管理器与包的发布

初学Nodejs 包 1、概念 什么是包 Nodejs中的第三方模块又叫做包。包的来源 不同于Nodejs中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供人使用。(nodejs中的包都是免费且开源的,不需要付费即可免费下载使用…