定义IllegalScoreException异常类,代表分数相加后超出合理范围的异常。该异常是checked exception,即希望该异常一定要被捕获处理。

定义IllegalNameException异常类,代表名字设置不合理的异常。该异常是unchecked exception

定义Student类。

属性:

private String name;
private int score;
方法:

toString //自动生成
setter/getter //自动生成
改造setName //如果姓名首字母为数字则抛出IllegalNameException
public int addScore(int score) //如果加分后分数<0 或>100,则抛出IllegalScoreException,加分不成功。
###main方法:

输入new则新建学生对象。然后输入一行学生数据,格式为姓名 年龄,接着调用setName,addScore。否则跳出循环。
setName不成功则抛出异常,并打印异常信息,然后继续下一行的处理。
addScore不成功则抛出异常,并打印异常信息,然后继续下一行的处理。如果2、3都成功,则打印学生信息(toString)
如果在解析学生数据行的时候发生其他异常,则打印异常信息,然后继续下一行的处理。
Scanner也是一种资源,希望程序中不管有没有抛出异常,都要关闭。关闭后,使用System.out.println(“scanner closed”)打印关闭信息
注意:使用System.out.println(e);打印异常信息,e为所产生的异常。

输入样例:

new
zhang 10
new
wang 101
new
wang30
new
3a 100
new
wang 50
other

输出样例:

Student [name=zhang, score=10]
IllegalScoreException: score out of range, score=101
java.util.NoSuchElementException
IllegalNameException: the first char of name must not be digit, name=3a
Student [name=wang, score=50]
scanner closed
import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s;while (true){s= sc.nextLine();if (s.equals("new")){Student stu=new Student();String s1=sc.nextLine();String[] ss=s1.split(" ");try {stu.setName(ss[0]);}catch (Exception e){continue;}try{stu.addScore(Integer.parseInt(ss[1]));}catch (Exception e){stu.flag=false;System.out.println("java.util.NoSuchElementException");}if (stu.flag) System.out.println(stu);}else if (s.equals("other")){break;}}sc.close();System.out.println("scanner closed");}
}class IllegalScoreException extends RuntimeException{public IllegalScoreException() {}public IllegalScoreException(String message) {super(message);}}class IllegalNameException extends RuntimeException{public IllegalNameException() {}public IllegalNameException(String message) {super(message);}
}class Student{private String name;private int score;boolean flag=true;public String getName() {return name;}public void setName(String name) {if (name.charAt(0)>='0'&&name.charAt(0)<='9'){try{throw new IllegalNameException("the first char of name must not be digit, name=");}catch (IllegalNameException e){flag=false;System.out.println(e+name);}}else {this.name = name;}}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return "Student [" +"name=" + name  +", score=" + score +']';}public int addScore(int score){this.score=this.score+score;if (this.score>100||this.score<0){try{throw new IllegalScoreException("score out of range, score=");}catch (IllegalScoreException e){flag=false;System.out.println(e.toString()+score);}}return this.score;}
}

7-4 jmu-Java-06异常-04-自定义异常(综合) (15 分)相关推荐

  1. 软考中级(软件设计师)——面向对象程序设计(C++Java二选一的题15分-目标3分)

    软考中级(软件设计师)--面向对象程序设计(C++&Java二选一的题15分-目标3分) 目录 软考中级(软件设计师)--面向对象程序设计(C++&Java二选一的题15分-目标3分) ...

  2. 6-2 求圆面积自定义异常类 (15分)

    计算圆的面积,其中PI取3.14,圆半径为负数时应抛出异常,输出相应提示.根据提供的主类信息,编写Circle类和CircleException类,以及在相关方法中抛出异常. 函数接口定义: 裁判测试 ...

  3. 中M22春C、Java入门练习 7-19 计算天数 (15 分)

    #include <stdio.h>int main() {int yyyy,mm,dd,y=0,z;scanf("%d/%d/%d",&yyyy,&m ...

  4. 抛出运行时异常的目的_「JAVA」运行时异常、编译时异常、自定义异常,通过案例实践转译和异常链...

    Java基础之异常处理机制 什么是异常 从事Java开发的小伙伴对于"异常"应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出.那究竟什么是异常?异常即非正常的,不同于平常.一般 ...

  5. java 处理异常的场景_Java高级----异常处理机制、自定义异常----含思维导图

    Java高级----异常处理机制.自定义异常----含思维导图 Java高级----异常处理机制.自定义异常----含思维导图 南一Java自学交流QQ群: 586012641 拒绝任何广告,共享Ja ...

  6. java异常大全,如何处理异常,如何自定义异常

    此文章截图转载自:java异常大全!如何处理异常!如何自定义异常!_qq1328585964的博客-CSDN博客_java 异常大全s 我怕文章莫名消失所以转载下!!!我收藏的文章偶尔会没有

  7. Java 中常见的异常和自定义异常

    常见异常: java.lang.nullpointerexception    这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...

  8. java常见异常思维导图_21_异常_第21天(异常、企业面试题,思维导图下载)

    今日内容介绍 1.异常概述和继承体系 2.异常原因以及处理方式 3.运行时期异常 4.方法重写的异常处理 5.Throwable类常见方法 6.自定义异常 01异常的概述 * A: 异常的概述 * a ...

  9. java 抛异常给上级_java异常处理机制(示例代码)

    Exception 类的层次 java中所有的异常类是从 java.lang.Exception 类继承的子类. 而Exception 类是 Throwable (可抛出的)类的子类.除了Except ...

最新文章

  1. cnn 反向传播推导_反向传播算法推导过程(非常详细)
  2. 机器学习系列(1)_逻辑回归初步
  3. BUUCTF--[VN2020 公开赛]拉胯的三条命令
  4. mariadb mysql 语法_Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍
  5. 【需求工程】需求获取
  6. Java笔记-JNI中Java与C语言解决中文乱码问题
  7. 手机端公告文本回滚(简单的jq代码)
  8. vue + element中el-table导出excel
  9. .NET库和向后兼容的技巧——第3部分
  10. 电脑排行榜笔记本_热门笔记本电脑排行榜推荐_windows7教程
  11. hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
  12. 深入浅出通信原理知识点8
  13. 本特利330906-02-12-05-02-CN传感器
  14. 宝尚简讯-短期震荡在蓄势
  15. excel冻结窗口怎么设置_excel冻结多行怎么设置-和冻结首行一样哦
  16. 喷漆房出现故障应该如何处理
  17. Uniapp Base64码 播放音频(MP3)
  18. 用友NC远程命令执行漏洞通告
  19. DSF view Model
  20. 修复迅雷看看xmp.rmvb视频文件错误关联

热门文章

  1. GCC编译器选项及优化提示
  2. ubuntu 编译QT Basic XLib functionality test failed!问题解决
  3. php实现贴吧功能,PHPCMS V9万能字段增加单选功能,实现多条房产信息调用1个开发商信息等效果...
  4. java 雪花特效_java实现图片飘雪花的特效
  5. 什么叫做罗列式_陈列,罗列是什么意思?
  6. java double 小数点后两位小数_Java中double类型的数据精确到小数点后两位
  7. 回帖赢好礼,让AI回应你的要求
  8. 经典营销模型的产品化介绍
  9. EDAS微服务应用同城容灾最佳实践
  10. 使用Xshell链接阿里的Linux服务器