当前位置: 首页 > ops >正文

自定义异常小练习

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

​​​​​​​

键盘敲烂,年薪百万!


目录

键盘敲烂,年薪百万!

异常综合练习:

自定义异常


异常综合练习:

自定义异常:

  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.xdnf.cn/news/9661.html

相关文章:

  • Intellij IDEA 查找接口实现类的快捷键
  • CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
  • 数据可视化(第4、5、6次课)
  • 【Java Web】速通JavaScript
  • k8s pod启动失败问题排查
  • NanoGPT的BenchMarking.py
  • 数据治理是什么意思?数据治理平台有哪些?
  • 如何使用.Net Reactor 批量加密 DLL
  • PostgreSQL 备份与恢复策略
  • docker网络相关内容详解
  • Java开发经验——阿里巴巴编码规范实践解析7
  • Axure设计案例——科技感立体柱状图
  • 动态规划-931.下降路径最小和-力扣(LeetCode)
  • 高光谱成像相机:基于高光谱成像技术的玉米种子纯度检测研究
  • 华为OD机试真题——阿里巴巴找黄金宝箱(II)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 小程序 - 视图与逻辑
  • MySQL的基本架构
  • 社群分享:义乌|杭州电商|店群卖家,私域鱼塘运营的排单系统开源|私域鱼塘运营|返款软件开源
  • Typora-macOS 风格代码块
  • Kotlin Multiplatform与Flutter深度对比:跨平台开发方案的实战选择
  • ZYNQ sdk lwip配置UDP组播收发数据
  • ICECEPSS 2025:节能环保与社会治理的融合之道
  • Windows系统安装MySQL Connector 使用C++ VS2022连接MySQL
  • 吉林大学操作系统上级实验四(hash存储讲解及顺序存储文件管理实现)
  • 【LangChain】框架解析
  • LVS-DR高可用-Keepalived
  • GelSight Mini触觉传感器:7μm精度+3D 映射,赋能具身智能精密操作
  • 11.spark源码编译
  • 前端工程化 Source Map(源码映射)详解
  • 【C++】“多态”特性