异常组成、作用、处理方式(3种)、异常方法、自定义异常

目录

异常的组成:运行异常与编译异常

两者区别:编译异常用来提醒程序员,运行异常大部分是由于参数传递错误导致

异常作用:

作用1:就是平时的报错,方便我们找到报错的来源

作用2:在方法内部将异常返回给调用处,了解底层执行情况:

异常的处理方式:3种

1、默认方式:打印异常信息,并且不再执行下方的所有代码

2、自己处理(捕获异常):代码出现异常后,也可以继续执行下面的代码

利用格式:

示例2:

注意点:

关于自己处理的四个问题:

1、如果try中没有遇到问题,如何执行?

2、如果try中遇到很多问题,如何执行?

为什么要把父类异常对象放最后?       和多态有关

多种异常采用一种捕捉方式时,可以这样写:"|"

3、try中遇到的异常没有被捕获,怎么执行?

4、try中如果遇到问题,try下面的代码还会执行吗?(可以结合问题2看)

3、抛出异常的格式:throw和throws

示例:

异常中的常见方法:第三个最常用

关于第三条的细节:

1、只是打印异常信息,并不会终止程序

2、printStackTrace源码中:

自定义异常:针对具体异常的自定义,使得异常更加清晰

以一道例题展开说明:

自定义什么?

自定义异常:

一般命名:

一般只重写继承父类异常的前两个方法,一个空参一个带参

解题过程:

如果不采取自定义,采用广义的运行异常的对象RuntimeException e:


异常的组成:运行异常与编译异常

两者区别:编译异常用来提醒程序员,运行异常大部分是由于参数传递错误导致

异常作用:

作用1:就是平时的报错,方便我们找到报错的来源

作用2:在方法内部将异常返回给调用处,了解底层执行情况:

如:我要输入学生年龄,限制在18-40,可以进行如下操作:throw一个异常对象,让调用处知道已经出错,方便后面利用try,catch进行异常获取,进行下面第二个图的操作,可自主进行选择

        

异常的处理方式:3种

1、默认方式:打印异常信息,并且不再执行下方的所有代码

示例1:

2、自己处理(捕获异常):代码出现异常后,也可以继续执行下面的代码

利用格式:

示例2:

注意点:

关于自己处理的四个问题:

1、如果try中没有遇到问题,如何执行?

        会只把try中代码执行完毕,不会执行catch中的代码(只有出现异常时,才会进入catch)

2、如果try中遇到很多问题,如何执行?

        try中出现很多问题,会写多个catch与之对应,保证其中任何一个问题出现,都可以被捕获,但是,当一个异常出现后,将不再执行这个异常后面的其他语句异常,跳出try,执行catch对应的异常捕获。因为代码中可能存在多个不同的异常情况,这个多个catch的主要目的是为了:捕获这段代码中出现了异常的这种现象,而不是要把所有异常都捕获出来,捕获出其中一个异常后,他的目标就已经实现了。

为什么要把父类异常对象放最后?       和多态有关

 catch多重异常时,子异常类必须在它们任何父类之前。因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,如果子类在父类后面,子类将永远不会到达。你想写也不行,系统会报编译错误。

多种异常采用一种捕捉方式时,可以这样写:"|"

3、try中遇到的异常没有被捕获,怎么执行?

没有被捕获,说明try中的异常和catch中的异常对象不相同,此时相当于白写了这个try..catch,直接采用JVM默认方法

4、try中如果遇到问题,try下面的代码还会执行吗?(可以结合问题2看)

3、抛出异常的格式:throw和throws

示例:

异常中的常见方法:第三个最常用

关于第三条的细节:

1、只是打印异常信息,并不会终止程序

2、printStackTrace源码中:

自定义异常:针对具体异常的自定义,使得异常更加清晰

以一道例题展开说明:

自定义什么?

长度在3-10间,年龄在18-40岁间这些显然不是RuntimeException里面定义好的异常,如果触发了这些异常,为了更加清晰表明到底是哪种,需要自定义异常。

自定义异常:

一般命名:

一般只重写继承父类异常的前两个方法,一个空参一个带参

解题过程:

定义年龄异常:

public class NameFormatException extends RuntimeException{public NameFormatException() {super();}public NameFormatException(String message) {super(message);}
}

定义名字异常:

public class AgeOutOfBoundsException extends RuntimeException{public AgeOutOfBoundsException() {super();}public AgeOutOfBoundsException(String message) {super(message);}
}

在javabean文件中:调用并抛出

实现类:

如果不采取自定义,采用广义的运行异常的对象RuntimeException e

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

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

相关文章

一.2.(2)基本共射放大电路组成、工作原理;

1.基本共射放大电路组成 共什么取决于输入输出,共剩下的那一极 2.工作原理 输入信号ui通过电容C1加到三极管的基 极,引起基极电流iB的变化,iB的变化又使集电极电流ic发生变 化,且ic的变化量是iB变化量的β倍。由于有集电极电压&…

linux-虚拟内存-虚拟cpu

1、进程: 计算机中的程序关于某数据集合上的一次运行活动。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个…

Let‘s Encrypt 申请免费 SSL 证书(每隔60天自动更新证书)

文章目录 官网文档简介安装 Nginxacme.sh生成证书智能化生成证书 安装证书查看已安装证书更新证书 官网 https://letsencrypt.org/zh-cn/ 文档 https://letsencrypt.org/zh-cn/docs/ 简介 Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构,旨在促…

2024世界人工智能大会,神仙打架

B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈最近又发生了啥新鲜事? 该栏目以周更频率总结国内外前沿AI动态,感兴趣的可以点击订阅合集以及时收到最新推送 B站首秀世界人工智能大会,展示自研AI技术与AIGC…

人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析|文献速递·24-07-07

小罗碎碎念 本期文献主题:人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析 这一期文献的速递,是有史以来数量最大的一次,足足有十一篇,本来打算分两期写,但是为了知识的系统性,我决定咬咬牙&…

Partisia Blockchain 现已完成第一阶段空投,即将在DeFi领域发力

Partisia Blockchain 是以 MPC 方案为基础的 Layer1 生态,其具备可审计的隐私特性,同时还能保持链的可拓展、高迸发、可互操作以及安全等系列特性,Partisia Blockchain 被认为是目前最具潜力的企业级公链,并且估值高达 16 亿美元。…

远心镜头简介

一、远心镜头 大家都有这种印象,一个物体在人眼看来,会有近大远小的现象。这是因为物体近的时候,在视网膜上投影大,小的时候,投影小。镜头也是一样,因为近大远小的原因,会产生误差。特别是在做尺…

java项目总结8

1.方法引用 1.方法引用概述 注意注意: 1.引用出必须是函数式接口 2.被引用的方法必须已经存在 3.被引用方法的型参和返回值需要跟抽象方法保持一致 4.被引方法的功能要满足当前需求 Arrays.sort(arr,Main::subtraction); Main是该类的名称,&#xff1a…

C++20中的基于范围的for循环(range-based for loop)

C11中引入了对基于范围的for循环(range-based for loop)的支持&#xff1a;该循环对一系列值(例如容器中的所有元素)进行操作。代码段如下&#xff1a; const std::vector<int> vec{ 1,2,3,4,5 }; for (const auto& i : vec)std::cout << i << ", …

【server】nacos 安装

1、本地安装 1.1 nacos官网 Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 git 下载地址&#xff1a;https://github.com/alibaba/nacos/releases 1.2 解压并修改配置 1.2.1 通过properties 修改配置&#xff0c;添加数据库配置 1.2.2 创建数据库&…

数据库(表)

要求如下&#xff1a; 一&#xff1a;数据库 1&#xff0c;登录数据库 mysql -uroot -p123123 2&#xff0c;创建数据库zoo create database zoo; Query OK, 1 row affected (0.01 sec) 3&#xff0c;修改字符集 mysql> use zoo;---先进入数据库zoo Database changed …

利用docker搭建漏洞环境,使用SSRF+Redis写入centos以及ubuntu的公钥,实现免密登录

一、实验环境 kali:在kali中搭建docker容器环境&#xff0c;这里我主要是使用第一个&#xff1b; redis作为一种数据库&#xff0c;它可以将数据写入内存中去&#xff0c;我们通过利用ssrf请求&#xff0c;实现服务器对自己的公钥写入&#xff0c;从而实验免密登录&#xff1b;…

RK3568 GPU介绍及使用

一、RK3568简介 RK3568四核64位Cortex-A55 处理器&#xff0c;采用全新ARM v8.2-A架构&#xff0c;主频最高可达2.0GHz&#xff0c;效能有大幅提升&#xff1b;采用22nm先进工艺&#xff0c;具有低功耗高性能的特点RK3568集成了双核心架构 GPU&#xff0c;高性能VPU以及高效能…

GraalVM上的多语言混合开发

上篇文件我们介绍了GraalVM强大的静态编译功能,能够让Java应用程序摆脱虚拟机的束缚,像其它本地编译的应用一样直接运行。那么GraalVM的神奇之处仅限于此吗?今天我们再来看看它的另一个重要特性—多语言混合开发 多语言平台 Java并不是唯一运行在JVM上的语言,这个我们都应…

����: �Ҳ������޷��������� javafx.fxml ԭ��: java.lang.ClassNotFoundException解决方法

如果你出现了这个问题&#xff0c;恭喜你&#xff0c;你应该会花很多时间去找解决方法。别问我怎么知道的... 解决方法&#xff1a; 出现乱码的原因&#xff1a;配置vm时 这些配置看似由有空格&#xff0c;换行&#xff0c;实则没有。所以解决办法就是&#xff0c;重新配置你…

防火墙概述

1、防火墙 防火墙顾名思义就是防止火灾发生时&#xff0c;火势烧到其它区域&#xff0c;使用由防火材料砌的墙。在网络安全中&#xff0c;防火墙的作用就是保护本地网络不受到外部网络或恶意程序的伤害。 防火墙的核心任务是控制和防护&#xff0c;即通过安全策略识别流量并做…

前端面试题17(js快速检索方法详解)

在前端JavaScript中&#xff0c;快速检索数据通常涉及到数组或对象的搜索。这里我会介绍几种常见的快速检索方法&#xff0c;并提供相应的代码示例。 1. 数组的find和findIndex方法 find: 返回数组中满足条件的第一个元素的值。findIndex: 返回数组中满足条件的第一个元素的索…

【mindspore进阶】02-ResNet50迁移学习

Mindspore 应用&#xff08;2&#xff09;ResNet50迁移学习 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化…

张量分解(2)——张量运算(内积、外积、直积、范数)

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

MATLAB贝叶斯线性回归模型案例

采用辛烷值数据集“spectra_data.mat”&#xff08;任意数据集均可&#xff09;&#xff0c;介绍贝叶斯线性回归模型的构建和使用流程。 运行结果如下&#xff1a; 训练集预测精度指标如下: 训练集数据的R2为: 1 训练集数据的MAE为: 0.00067884 训练集数据的RMSE为: 0.0008893…