异常的学习

异常就是代表程序出现的问题

父类:Exception

编译时异常:没有继承RuntimeException的异常,直接继承于Exception。编译阶段就会错误提示。

运行时异常:RuntimeException本身和子类。编译阶段没有错误提示,运行时出现。

作用

1.异常是用来查询bug的关键参考信息

2.异常可以作为方法内部的一种特殊的返回值,以便通知调用者底层的执行情况。

throws:

注意:写在方法定义处,表示声明一个异常告诉调用者,使用本方法可能会有那些异常。

  • 编译时异常:必须要写

  • 运行时异常:可以不写

throw:

注意:写在方法内,结束方法,手动抛出异常对象,交给调用者方法中下面的代码不在执行。

练习:

需求:

package myFunction;public class GirlFriend {private String name;private int age;public GirlFriend() {}public GirlFriend(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {if(name.length()<3||name.length()>10){throw  new RuntimeException();}this.name = name;}public int getAge() {return age;}public void setAge(int age) {if(age<18||age>40){throw  new RuntimeException();}this.age = age;}@Overridepublic String toString() {return "GirlFriend{" +"name='" + name + '\'' +", age=" + age +'}';}
}
package myFunction;
import java.util.Scanner;
public class Test {public static void main(String[] args) {Scanner sc=new Scanner(System.in);GirlFriend gf=new GirlFriend();while (true) {try {System.out.println("姓名");String name = sc.nextLine();gf.setName(name);System.out.println("年龄");String ageStr=sc.nextLine();int age=Integer.parseInt(ageStr);gf.setAge(age);break;} catch (NumberFormatException e) {System.out.println("年龄的格式有误,请输入数字");continue;}catch (RuntimeException e) {System.out.println("姓名的长度或者年龄的范围有误");continue;}}System.out.println(gf);}
}

自定义异常:

步骤:

1.定义异常类

2.写继承关系

3.空参构造

4.带参构造

意义:就是为了让控制台的报错信息更加的见名知意。

package myFunction;public class NameFormatException extends RuntimeException{public NameFormatException() {}public NameFormatException(String message) {super(message);}
}
package myFunction;public class AgeOutOfBounds extends RuntimeException{public AgeOutOfBounds() {}public AgeOutOfBounds(String message) {super(message);}
}
package myFunction;public class GirlFriend {private String name;private int age;public GirlFriend() {}public GirlFriend(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {if(name.length()<3||name.length()>10){throw  new NameFormatException(name+"格式有误,长度应该为:3-10");}this.name = name;}public int getAge() {return age;}public void setAge(int age) {if(age<18||age>40){throw  new AgeOutOfBounds(age+"超出了范围");}this.age = age;}@Overridepublic String toString() {return "GirlFriend{" +"name='" + name + '\'' +", age=" + age +'}';}
}
package myFunction;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc=new Scanner(System.in);GirlFriend gf=new GirlFriend();while (true) {try {System.out.println("姓名");String name = sc.nextLine();gf.setName(name);System.out.println("年龄");String ageStr=sc.nextLine();int age=Integer.parseInt(ageStr);gf.setAge(age);break;} catch (NumberFormatException e) {e.printStackTrace();continue;}catch (AgeOutOfBounds e) {e.printStackTrace();continue;}catch (NameFormatException e) {e.printStackTrace();continue;}}System.out.println(gf);}
}

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

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

相关文章

EMCC 13.5 完整安装详细版

参考文档&#xff1a; Cloud Control Basic Installation Guide 13.5Overview of the Enterprise Manager Proactive Patch Program (Doc ID 822485.1)Enterprise Manager Cloud Control Management Agent 13.5 Release Update (RU) 19 Bug List (Doc ID 2996590.1)13.5: How …

记录对NSIS的一些微调 实现Electron安装包美化

利洽科技-nsNiuniuSkinUI - NSIS 实现了electron 的安装包美化&#xff0c;免费&#xff0c;便捷。 下面我整理了一些关于它的微调&#xff0c;使其安装卸载更加简单快捷。 1. 默认展示安装路径部分 &#xff08;1&#xff09;将moreconfiginfo标签visible 设置为 true&#…

GEE遥感云大数据林业应用典型案例及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

进击的PostgreSQL

目录 前言 一、什么是PostgreSQL 1.PostgreSQL的定义 2.PostgreSQL功能和特性 2.1数据类型 2.2数据完整性 2.3并发性、性能 2.4可靠性、灾难恢复 2.5安全 2.6扩展 2.7国际化、文本搜索 二、部署PostgreSQL 1.下载与安装 2.配置数据库 3.配置远程访问 4.修改配置…

MySQL的日志:undo log、redo log、binlog有什么作用

目录 从一个update语句说起 undo log 为什么需要undo log undo log 版本链 undo log 是如何持久化到磁盘? redo log 为什么需要redo log redo的组成 redo Log的刷盘策略 redo Log循环写 crash-safe能力 binlog 为什么需要 binlog &#xff1f; binlog与redo lo…

cmake 报错: could not open ‘kernel32.lib‘: no such file or directory

首次用hello world想配置cmake。powershell下执行cmake .. -G "MinGW Makefiles"报的这个错。 因为查到这个库是windows下的&#xff0c;于是想着换成Unix试下。 执行&#xff1a;cmake .. -G "Unix Makefiles" 成功 cmake 版本&#xff1a; cmake ver…

视频可回溯系统技术方案vue3+ts+tegg+mysql+redis+oss

highlight: a11y-dark theme: yu 一、 项目背景 保险、基金、银行等众多行业在做技术平台时都会需要一种能够准确了解用户操作行为的方式方法。诸如通过埋点、平台监控、视频可回溯等,通过技术手段,保存用户操作轨迹,以此规范安全销售、平台健康检查、出现纠纷时可追溯、问…

vue3使用jsx渲染以及注意点

安装对应的babel npm install vue-plugin-jsx -Dbabel配置: 在文件.babelrc 或者 babel.config.js中添加 {"plugins": ["vue/babel-plugin-jsx"] }写法&#xff1a; // 在App.tsx文件中编写 import { definedComponent, reactive } from "vue"…

设计模式 门面模式

01.先看写信的过程接口&#xff0c;定义了写信的四个步骤&#xff1a; public interface LetterProcess {//首先要写信的内容public void writeContext(String context); //其次写信封public void fillEnvelope(String address); //把信放到信封里public void letterInotoEnve…

java算法第23天 | ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 思路&#xff1a; 这道题和删除节点异曲同工。不过要注意避坑&#xff1a;当遍历到不在范围内的节点时&#xff0c;不要直接返回null或直接返回其左或右孩子&#xff0c;而是继续对其左或右孩子做递归。 /*** Definition for a binary tree node.* public…

搭建EMQX MQTT服务器(超详细)

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;服务器是一种实现 MQTT 协议的服务器软件。MQTT 是一种轻量级的、发布/订阅模式的消息传输协议&#xff0c;通常用于物联网&#xff08;IoT&#xff09;应用中的设备通信。MQTT 服务器负责接收来自客户端的消息…

虚拟化技术在企业中的价值

在当前快速演变的商业环境中&#xff0c;企业面临的市场竞争压力正不断加剧。为了在这场竞争中保持自身的优势&#xff0c;公司急需寻找那些能够提升效率、削减成本以及加快创新步伐的解决方案。在这样的背景下&#xff0c;虚拟化技术作为一种强有力的工具&#xff0c;正助力众…

【SpringCloud】使用Seata实现分布式事务

目录 一、Seata 框架的需求背景二、Seata 事务模式与架构2.1 Seata 组成2.2 Seata 事务模式 三、Seata 实战演示3.1 部署 Seata Server3.1.1 下载 Seata Server3.1.2 更改 Seata Server 配置3.1.3 创建 Seata Server 所需的数据库、数据库表3.1.4 启动 Seata Server 3.2 Seata …

php作为服务器端语言,处理网页没有问题,但是gui就差了点。先看一下主流的gui框架有哪些

其他php桌面应用程序 1 PHP 程序打包为桌面应用-PHPDesktop 的 Linux 版本介绍 2 nativephp 3 借助 js 还可以用electron 还是tauri 除了wxWidgets和Qt&#xff0c;还有许多其他的GUI框架可供选择&#xff0c;每个框架都有其独特的优势和缺点。以下是一些常见的GUI框架及其特…

C++ 变量类型

C 变量类型 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有指定的类型&#xff0c;类型决定了变量存储的大小和布局&#xff0c;该范围内的值都可以存储在内存中&#xff0c;运算符可应用于变量上。 变量的名称可以由字母、数字和下划线字符组成。它必须以字母…

Fabric.js在vue2中使用

Fabric.js安装 这里我是基于vue来使用的&#xff0c;先安装上Fabric.js npm install fabric 在main.js中 import fabric from fabric Vue.use(fabric);Fabric 提供了 7 种基础形状&#xff1a; fabric.Circle (圆)fabric.Ellipse (椭圆)fabric.Line (线)fabric.Polyline (多条…

伊理威科技:抖音店铺运营好做吗

在数字营销的浪潮中&#xff0c;抖音以其强大的用户基础和独特的算法推荐机制成为了众多商家眼中的“香饽饽”。然而&#xff0c;对于许多初涉此领域的商家来说&#xff0c;心中不免有这样的疑问&#xff1a;“抖音店铺运营好做吗?” 运营一个抖音店铺并非易事。它既需要创意的…

【C语言】守护进程(daemon)的输出到一个文本文件

一、常用的守护进程函数 void daemonize () {//deamonizepid_t pid fork();if( pid > 0 ){ //parent exitexit(0);}//child continuesetsid();chdir("/");close(0);open("/dev/null", O_RDWR);//no env debugif(!getenv("debug")){cl…

Spring 拦截器实现请求拦截与参数处理【拦截器(Interceptor)和过滤器(Filter)的区别】

业务场景&#xff1a; 项目中需要使用请求头传输一个密文字符串&#xff0c;后端服务获取密文字符串后&#xff0c;进行解密验证&#xff0c;然后执行响应的业务&#xff0c;这里有好几个接口都用需要使用这个密文字符串&#xff0c;如果我们在每个接口中进行校验处理&#xff…

AI预测福彩3D第13弹【2024年3月20日预测--第3套算法重新开始计算第3次测试】

今天咱们继续对第3套算法进行第3次测试&#xff0c;第3套算法加入了012路的权重。废话不多说了&#xff0c;直接上结果吧~ 最终&#xff0c;经过研判分析&#xff0c;2024年3月20日福彩3D的七码预测结果如下&#xff1a; 百位&#xff1a;7 4 8 3 6 9 0&#xff08;5换0&#x…