自定义异常类与自定义异常类的练习

自定义异常类

为什么需要自定义异常类:

我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。

在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢?

什么是自定义异常类:

在开发中根据自己业务的异常情况来定义异常类.

自定义一个业务逻辑异常: RegisterException。一个注册异常类。异常类如何定义:

1.自定义一个编译期异常:自定义类并继承于java.lang.Exception 。

2.自定义一个运行时期的异常类:自定义类并继承于java.lang .RuntimeException 。

为什么要自定义异常类?
当我们在输入成绩,输入工资,取款的时候,往往都有一个范围,而这个范围不是JVM能够识别的,因此在输入的时候就容易出错,因此在这些时候JDK中的异常无法满足我们的需求,我们只能自己定义异常类。

如何自定义异常类?
可以通过继承Exception来派生自己的子异常类。

而Exception中常用的构造方法:+Exception(),+Exception(message:String),+Exception(message:String,Throwable ex)也可以被子类用super调用。

class BalanceException extends Exception
{
    double balance;
    public BalanceException(double balance)    //构造方法
    {
        super("余额不足!"+balance);        //调用Exception(message:String)    
    }
}

自定义了一个异常类,

public class Test {            
    public static void main(String[] args)throws Exception     //声明异常类型
    { 
        Account ac=new Account();        //创建一个账户类
        boolean continueInput=true;      //设置一个管理循环的变量
        do
        {
            try                //测试与捕获异常
            {
                System.out.println("Enter the money:");    
                ac.withdraw(new Scanner(System.in).nextDouble());    
                continueInput=false;    
            }
            catch(BalanceException ex)   
            {
                System.out.println(ex.getMessage());
                System.out.println("Reset the money!");
            }
        }while(continueInput);
        System.out.println("Finish this action!");
    }
}
class Account    //创建账户类
{
    double balance=5000;
    public void withdraw(double money)throws BalanceException    //声明可能会发生异常
    {
        if(money>this.balance)
        {
            throw new BalanceException(balance);        //抛出异常对象
        }
        else
            balance-=money;
    }
}

 

自定义异常类的练习

要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。分析:
1.使用数组保存已经注册过的用户名(数据库)
2.使用scanner获取用户输入的注册的用户名(前端,页面)3.定义一个方法,对用户输入的中注册的用户名进行判断
遍历存储已经注册过用户名的数组,获取每一个用户名使用获取到的用户名和用户输入的用户名比较
true:
用户名已经存在,抛出RegisterException异常,告知用户“亲,该用户名已经被注册";false:
继卖遍历比较
如果循环结束了,还没有找到重复的用户名,提示用户"恭喜您,注册成功! ";

 

 

 

 

posted @ 2022-07-07 15:13  zj勇敢飞,xx永相随  阅读(44)  评论(0编辑  收藏  举报