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

news2024/10/6 6:57:33

目录

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

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

异常作用:

作用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.coloradmin.cn/o/1905191.html

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

相关文章

华为机试HJ51输出单向链表中倒数第k个结点

华为机试HJ51输出单向链表中倒数第k个结点 题目: 想法: 因为要用链表,且要找到倒数第k个结点,针对输入序列倒叙进行构建链表并找到对应的元素输出。注意因为有多个输入,要能接受多次调用 class Node(object):def __…

[Godot3.3.3] – 人物死亡动画 part-2

前言 在上一个 part 中已经完成了大部分的逻辑,现在进行一些新的修改。 增加重力 首先将 PlayerDeath 中的 AnimationPlayer 设置为自动播放。 返回 PlayerDeath.gd 并增加一个重力 300,防止玩家的尸体腾空运动。 var gravity 1000 _process 函数中…

某大会的影响力正在扩大,吞噬了整个数据库世界!

1.规模空前 你是否曾被那句“上有天堂,下有苏杭”所打动,对杭州的湖光山色心驰神往?7月,正是夏意正浓的时节,也是游览杭州的最佳时期。这座古典与现代交融的城市将迎来了第13届PostgreSQL中国技术大会。作为全球数据库…

基于深度学习LightWeight的人体姿态之行为识别系统源码

一. LightWeight概述 light weight openpose是openpose的简化版本,使用了openpose的大体流程。 Light weight openpose和openpose的区别是: a 前者使用的是Mobilenet V1(到conv5_5),后者使用的是Vgg19(前10…

二、Spring

二、Spring 1、Spring简介 1.1、Spring概述 官网地址:https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Jav…

Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇

Nginx七层(应用层)反向代理 HTTP反向代理proxy_pass篇 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of thi…

MySQL Binlog详解:提升数据库可靠性的核心技术

文章目录 1. 引言1.1 什么是MySQL Bin Log?1.2 Bin Log的作用和应用场景 2. Bin Log的基本概念2.1 Bin Log的工作原理2.2 Bin Log的三种格式 3. 配置与管理Bin Log3.1 启用Bin Log3.2 配置Bin Log参数3.3 管理Bin Log文件3.4 查看Bin Log内容3.5 使用mysqlbinlog工具…

论文研读|AI生成图像检测发展历程及研究现状

前言:本篇博客系统性梳理AI生成图像检测的研究工作。 「人工智能生成图像检测」研究及发展现状介绍 参考资料 https://fdmas.github.io/AIGCDetect/针对AIGC检测的鲁棒性测试——常见攻击手段汇总论文研读|以真实图像为参考依据的AIGC检测论文研读&…

C++ 函数高级——函数重载——注意事项

1.引用作为重载条件 2.函数重载碰到函数默认参数 示例: 运行结果:

HTTP长连接

长连接优点 HTTP为什么要开启长连接呢? 主要是为了节省建立的时间,请求可以复用同一条TCP链路,不用重复进行三握+四挥 如果没有长连接,每次请求都做三握+四挥 如果有长链接,在一个 TCP 连接中可以持续发送多份数据而不会断开连接,即请求可以复用TCP链路 长连接缺点 …

国内免费Ai最新体验+评分

我们主要从画图、数据分析、语言三个方面进行简单测评 1.智谱AI - ChatGLM 智谱产品: 智谱清言 CodeGeeX–智能编程助手——放在这里给大家推荐一手 AMiner 学术论文检索平台 测试1-画图测试 ⭐⭐⭐⭐ 画一头猪 测试2-数据分析 ⭐⭐⭐⭐ 画图和线性回归模型…

通信协议_C#实现自定义ModbusRTU主站

背景知识:modbus协议介绍 相关工具 mbslave:充当从站。虚拟串口工具:虚拟出一对串口。VS2022。 实现过程以及Demo 打开虚拟串口工具: 打开mbslave: 此处从站连接COM1口。 Demo实现 创建DLL库,创建ModbusRTU类,进行实现: using Syste…

53-1 内网代理3 - Netsh端口转发(推荐)

靶场还是用上一篇文章搭建的靶场 :52-5 内网代理2 - LCX端口转发(不推荐使用LCX)-CSDN博客 一、Netsh 实现端口转发 Netsh是Windows自带的命令行脚本工具,可用于配置端口转发。在一个典型的场景中,如果我们位于公网无法直接访问内网的Web服务器,可以利用中间的跳板机通过…

防火墙基础及登录(华为)

目录 防火墙概述防火墙发展进程包过滤防火墙代理防火墙状态检测防火墙UTM下一代防火墙(NGFW) 防火墙分类按物理特性划分软件防火墙硬件防火墙 按性能划分百兆级别和千兆级别 按防火墙结构划分单一主机防火墙路由集成式防火墙分布式防火墙 华为防火墙利用…

SpringBoot运维篇

工程打包与运行 windows系统 直接使用maven对项目进行打包 jar支持命令行启动需要依赖maven插件支持&#xff0c;打包时须确认是否具有SpringBoot对应的maven插件 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><ar…

Mysql在Windows系统下安装以及配置

目录 一、下载Mysql 二、安装Mysql及环境配置 一、下载Mysql 1. 下载地址 官网:https://www.mysql.com&#xff0c;这里我选用的是Mysql8.0.37版本&#xff08;版本无所谓&#xff0c;随便下8.0.几都行&#xff09; 2.点击DOWNLOADS 然后&#xff0c;点击 MySQL Community…

React中的useMemo和memo

引言 React是一个声明式的JavaScript库&#xff0c;用于构建用户界面。在开发过程中&#xff0c;性能优化是一个重要的方面。useMemo和memo是React提供的工具&#xff0c;用于帮助开发者避免不必要的渲染和计算&#xff0c;从而提升应用性能。 问题背景 在React应用中&#…

计算样本之间的相似度

文章目录 前言一、距离度量1.1 欧几里得距离&#xff08;Euclidean Distance&#xff09;1.2 曼哈顿距离&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距离&#xff08;Chebyshev Distance&#xff09;1.4 闵可夫斯基距离&#xff08;Minkowski Distance&#xff09…

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

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

springboot配置扫描生效顺序

文章目录 举例分析项目结构如下noddles-user-backend 两个配置文件noddles-user-job 配置文件noddles-user-server 配置文件问题:server和Job启动时对应加载的数据库配置为哪一个&#xff1f; 总结 在微服务架构中&#xff0c;backend模块会定义一个基础的配置文件&#xff0c;…