Exception练习:学生录入 年龄判断注意点

 最近在学习Java 异常处理的时候,练习了一个学生录入的程序,过程中也遇到了一些处理异常方面的问题,特地将其记录下来,方便日后自己查阅!!!!!!!

一.try...catch注意点

  1. 如果 try 中没有遇到问题,怎么执行?

    会把try中所有的代码全部执行完毕,不会执行catch里面的代码

  2. 如果 try 中遇到了问题,那么 try 下面的代码还会执行吗?

    那么直接跳转到对应的catch语句中,try下面的代码就不会再执行了 当catch里面的语句全部执行完毕,表示整个体系全部执行完全,继续执行下面的代码(注意,如果try中存在2个异常,那么在第一个异常执行之后,直接跳转到对应的catch try中剩下代码都不会执行,包括第二个异常)

  3. 如果出现的问题没有被捕获,那么程序如何运行?

    那么try...catch就相当于没有写.那么也就是自己没有处理. 默认交给虚拟机处理.

  4. 同时有可能出现多个异常怎么处理?

    出现多个异常,那么就写多个catch就可以了. 注意点:如果多个异常之间存在子父类关系.那么父类一定要写在下面

二.异常练习(学生录入)

 public void setAge(int age) {
        if(age>=18&&age<=25){
            this.age = age;
        }else{
            throw new NumberFormatException();
        }

    }
//至于为何为把18-25的年龄判断写到Student类中是因为
//这边是只有一个学生对象 我们可以写在Demo中,但如果有很多个学生对象,那么创建一个学生对象
// 赋值一次就要在Demo中写一次18-25的判断就显得冗余
//所以直接写在学生类中,那么多个学生对象的年龄判断都可以在学生类中进行

主程序

public class ExceptionDemo03 {
    public static void main(String[] args) {
        Student student = new Student();
        Scanner sc= new Scanner(System.in);
        System.out.println("请输入学生的姓名:");
        String name = sc.next();
        student.setName(name);
        while (true)
        {
            try {
                System.out.println("请输入学生的年龄:");
                String ageStr = sc.next();//这边用sc.next是为了既可以输入字符串 也可以输入整数!!!
                int parseInt = Integer.parseInt(ageStr);
                student.setAge(parseInt);
                break;
            }
            catch (NumberFormatException e) {
                System.out.println("请输入一个整数");
            }
            catch (RuntimeException e) {
                //e.printStackTrace();
                System.out.println("请输入一个18-25之间的数");
            }

        }
        System.out.println(student);

    }
}

这位博主讲的不错icon-default.png?t=L892https://blog.csdn.net/qq_34427165/article/details/83929470?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163331798016780357299387%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163331798016780357299387&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-83929470.first_rank_v2_pc_rank_v29&utm_term=try+catch%E7%94%A8%E6%B3%95&spm=1018.2226.3001.4187

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值