自定义异常小练习

article/2025/9/7 17:51:02

 在开始之前,让我们高喊我们的口号:

​​​​​​​

键盘敲烂,年薪百万!


目录

键盘敲烂,年薪百万!

异常综合练习:

自定义异常


异常综合练习:

自定义异常:

  1. 定义异常类
  2. 写继承关系
  3. 空参构造
  4. 带参构造

自定义异常意义:为了让控制台的报错信息更加见名知意

练习:

public class test {public static void main(String[] args) {/*需求:键盘录入自己心仪的女朋友姓名和年龄。姓名的长度在 3 - 10之间,年龄的范围为 18 - 40岁,超出这个范围是异常数据不能赋值,需要重新录入,一直录到正确为止。提示:需要考虑用户在键盘录入时的所有情况。比如:录入年龄时超出范围,录入年龄时录入了abc等情况*//*思路:1.键盘录入2.创建女朋友对象3.接收女朋友的姓名4.接收女朋友的年龄5.打印*//*为什么不直接使用sc.nextInt();?异常处理的局限性:当用户输入非数字内容(如 "abc")时,sc.nextInt()会抛出InputMismatchException,但输入缓冲区中的错误内容不会被清除,导致反复读取abc,无限循环。而通过sc.nextLine()读取整行并手动转换,可以完全控制输入缓冲区的状态。int num = sc.nextInt();sc.nextLine();   // 清除残留的换行符String str = sc.nextLine();   // 正常读取用户输入也可以一开始就直接使用nextLine*/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("输入的年龄的格式有误,请输入数字");}catch (RuntimeException e){System.out.println("姓名的长度或年龄的范围有误!");}}System.out.println(gf);}
}

Girl Friend类:

public class GirlFriend {private String name;private int age;public GirlFriend() {}public GirlFriend(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {int len = name.length();if (len < 3 || len > 10) {throw new RuntimeException();}this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {if (age < 18 || age > 40) {throw new RuntimeException();}this.age = age;}public String toString() {return "GirlFriend{name = " + name + ", age = " + age + "}";}
}

练习二见绑定的资源~


今天的分享就到这里,欢迎在评论区交流

一起学习,一起进步!

如果你能关注我

那就是对我创作的最大鼓励啦!


http://www.hkcw.cn/article/DKNRDrLGRk.shtml

相关文章

计算机网络

OSI七层模型 应用层&#xff1a;直接为用户提供网络服务&#xff0c;例如网页浏览、邮件收发表示层&#xff1a;处理数据格式&#xff0c;如加密、解密、压缩、编码等会话层&#xff1a;利用传输层提供的服务&#xff0c;在应用程序之间建立和维持会话&#xff0c;并能使会话获…

【循环神经网络RNN第一期】循环神经网络RNN原理概述

目录 &#x1f9e0; 什么是循环神经网络&#xff08;RNN&#xff09;&#xff1f;&#x1f501; RNN 的结构图&#x1f504; RNN 的“记忆”与问题RNN梯度推导 &#x1f9ec; LSTM&#xff1a;解决长期依赖问题&#x1f9f1; LSTM 的核心结构LSTM总结 参考 人类在思考的时候&am…

自动驾驶与智能交通:构建未来出行的智能引擎

随着人工智能、物联网、5G和大数据等前沿技术的发展&#xff0c;自动驾驶汽车和智能交通系统正以前所未有的速度改变人类的出行方式。这一变革不仅是技术的融合创新&#xff0c;更是推动城市可持续发展的关键支撑。 一、自动驾驶与智能交通的定义 1. 自动驾驶&#xff08;Auto…

5.3.1_2二叉树的层次遍历

遍历过程&#xff1a; 从根节点开始&#xff0c;从左到右一层一层遍历&#xff0c;如下&#xff1a;ABCDEFGHIJKL 初始化一个辅助队列&#xff0c;让根节点先入队&#xff0c;每次判断队列是否为空&#xff0c;不空则让队头节点出队访问该节点让该节点左右孩子入队尾(先左孩子…

Qt DateTimeEdit(时间⽇期的微调框)

使⽤ QDateEdit 作为⽇期的微调框. 使⽤ QTimeEdit 作为时间的微调框 使⽤ QDateTimeEdit 作为时间⽇期的微调框. 这⼏个控件⽤法⾮常相似, 我们以 QDateTimeEdit 为例进⾏介绍. QDateTimeEdit 核⼼属性 属性说明dateTime时间⽇期的值. 形如 2000/1/1 0:00:00date单纯⽇期…

NISCO里境全新VALUE系列合肥首店启幕,携手正反设计打造0压生活空间

2025年5月28日,NISCO里境全新VALUE系列全国首家旗舰店正式落子合肥,梦百合集团近三十位核心经销商代表齐聚,深度体验新系列门店的空间场景与创新产品矩阵。 作为品牌“双线并进”的重要布局,VALUE系列以高性价比为核心,聚焦二三线城市消费需求,通过沉浸式空间场景与革新性产品设…

制造企业搭建AI智能生产线怎么部署?

制造商需要精准协调生产和发货&#xff0c;确保订单及时交付。MES、ERP、CRM 系统与生产线集成&#xff0c;对生产管理流程、物料跟踪、品控、确定货期至关重要。如果某个系统发生延迟或者效率低下&#xff0c;会在造成整个生产环节停滞&#xff0c;影响最终交付&#xff0c;导…

Linux系统管理与编程24:基础条件准备-混搭“本地+阿里云”yum源

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 1.添加宿主机共享文件夹 Linux虚拟机可以和宿主机共享文件夹&#xff0c;这样有利于工具文件的共享。具体操作如下&#xff1a; 1&#xff09;vmware workstation共享文件夹 虚拟机…

VCS elab选项 -simprofile功能

#废话不多说&#xff0c;直接上干货 1.简介 VCS提供的simprofile功能是用于分析仿真过程中的CPU time和machine memory消耗情况&#xff0c;可以协助定位一些垃圾代码写法导致的仿真资源消耗过大问题&#xff1b;本篇内容包含&#xff0c;应用此功能的必要工具准备、makefile…

30万数据 动态查出用户拥有对应 skuid 数量

项目场景&#xff1a; 提示&#xff1a;30万数据 动态查出用户拥有对应 skuid 数量&#xff1a; 如 skuid1 skuid2 skuid3 skuid4 … 表结构如下 CREATE TABLE eb_nft_user (id int(10) unsigned NOT NULL AUTO_INCREMENT,skuId varchar(255) NOT NULL DEFAULT COMMENT 商品…

快递物流查询接口如何用C#进行调用?

一、什么是快递物流查询接口 支持国内外1500快递公司跟踪服务&#xff0c;包括顺丰、圆通、韵达等主流快递公司。快递物流查询接口为连接电商平台、物流企业与终端用户之间的桥梁&#xff0c;正在发挥着不可替代的作用。它不仅帮助用户实时掌握包裹动态&#xff0c;也为物流企…

【C语言】函数指针及其应用

目录 1.1 函数指针的概念和应用 1.2 赋值与内存模型 1.3 调用方式与注意事项 二、函数指针的使用 2.1 函数指针的定义和访问 2.2 动态调度&#xff1a;用户输入驱动函数执行 2.3 函数指针数组进阶应用 2.4 函数作为参数的高阶抽象 三、回调函数 3.1 指针函数…

第十三章:预处理

预处理功能是C语言特有的功能,可以使用预处理和具有预处理的功能是C 语言和其他高级语言的区别之一。预处理程序包含许多有用的功能,如宏定义、条件编译等,使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。 通过本章的学习,您可以: 1、掌握…

9.4 Q1|复旦大学CHARLS发文 | 老年人肌肉减少症和轻度认知障碍

1.第一段-文章基本信息 文章题目&#xff1a;Sarcopenia and mild cognitive impairment among elderly adults: The first longitudinal evidence from CHARLS 中文标题&#xff1a;老年人肌肉减少症和轻度认知障碍&#xff1a;来自CHARLS 的第一个纵向证据 发表杂志&#x…

python h5py 读取mat文件的<HDF5 object reference> 问题

我用python加载matlab的mat文件 mat文件&#xff1a; 加载方式&#xff1a; mat_file h5py.File(base_dir str(N) _nodes_dataset_snr- str(snr) _M_ str(M) .mat, r) Signals mat_file["Signals"][()] Tp mat_file["Tp"][()] Tp_list mat_fil…

【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​

深度优先搜索 导读&#xff1a;从广度到深度&#xff0c;探索图的遍历奥秘一、深度优先搜索二、算法思路三、算法逻辑四、算法评价五、深度优先生成树六、有向图与无向图结语&#xff1a;深潜与回溯&#xff0c;揭开图论世界的另一面 导读&#xff1a;从广度到深度&#xff0c;…

扫地机产品异物进入吸尘口堵塞异常检测方案

扫地机产品异物进入吸尘口堵塞异常的检测方案 文章目录 扫地机产品异物进入吸尘口堵塞异常的检测方案一.背景二.石头的音频异常检测的方案2.1 音频检测触发点2.1.1时间周期2.1.2根据清洁机器人清扫模式或清扫区域污渍类型,即当清扫模式为深度清洁模式 或清扫区域污渍类型为重度…

【Mini-F5265-OB开发板试用测评】RT-Thread的移植(调通串口+LED)

前言 近期&#xff0c;笔者有幸获得灵动微MM32F5265开发板的体验资格。MM32F5260搭载了arm china "Star-MC1 内核"处理器&#xff0c;拥有高性能&#xff0c;主打家电和工业等高可靠性应用领域。 总结一下&#xff0c;有以下亮点&#xff1a; 本土团队打造&#x…

MySQL8.4组复制

https://dev.mysql.com/doc/refman/8.4/en/group-replication.html 1 什么是组复制 组复制主要解决了传统异步复制主机宕机时可能造成主从节点数据不一致问题MySQL Group Replication&#xff0c;简称MGR将原有的gtid复制功能进行可增强&#xff0c;支持单主模式和多主模式组复…

【笔记】Trae+Andrioid Studio+Kotlin开发安卓WebView应用

文章目录 简介依赖步骤AS(Andriod Studio)创建项目AS创建虚拟机TRAE CN 修改项目新增按键捕获功能 新增WebViewWebView加载本地资源在按键回调中向WebView注入JS代码 最终关键代码吐槽 简介 使用Trae配合Andriod Studio开发一个内嵌WebView的安卓应用, 在WebView中加载本地资源…