自定义Exception类

    技术2022-07-11  73

    自定义异常

    /*

    自定义异常的三步骤1.定义:一般是继承Exception,重写构造2.设置:将该异常设置在某段代码中,复合条件则抛出3.触发:调用设置了异常的代码,符合条件则触发异常 */ 先定义两个自定义异常:年龄异常 取款异常

    AgeIllegalException

    package SE02.n1Exception; public class AgeIllegalException extends Exception{//年龄非法异常 public AgeIllegalException() { super(); // TODO 自动生成的构造函数存根 } public AgeIllegalException(String message) { super(message); // System.out.println(message); // TODO 自动生成的构造函数存根 } }

    BalanceNotEnoughException

    package SE02.n1Exception; public class BalanceNotEnoughException extends RuntimeException{ public BalanceNotEnoughException() { super(); // TODO 自动生成的构造函数存根 } public BalanceNotEnoughException(String message) { super(message); // TODO 自动生成的构造函数存根 } }

    注意:BalanceNotEnoughException我继承的是RuntimeException,这是Exception的一个子类 先介绍一下这个子类

    RuntimeException

    RuntimeException:运行时异常,这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerException,我们在写程序时不会进行catch或throw。

    再写一个Person类并植入异常

    package SE02.n1Exception; public class Person { int age=0; int balance=1000000; @Override public String toString() { return "Person [age=" + age + "]"; } public int getAge() { return age; } public void setAge(int age) throws AgeIllegalException { if(age>10000||age<0) { throw new AgeIllegalException("年龄非法"); } this.age = age; } public void deposit(int money) { balance+=money; } public void withDraw(int money) { if(balance-money<0) { throw new BalanceNotEnoughException("钱不够"); //可以看到在抛出本异常的时候,编译器并没有提示我们要抛出异常 } balance-=money; } }

    Test类

    package SE02.n1Exception; public class Demo04 { public static void main(String[] args){ Person p = new Person(); try { p.setAge(1000000);//触发AgeIllegalException } catch (AgeIllegalException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } p.withDraw(1000000000);//触发balanceNotEnoughException } }

    运行结果: SE02.n1Exception.AgeIllegalException: 年龄非法 at SE02.n1Exception.Person.setAge(Person.java:17) at SE02.n1Exception.Demo04.main(Demo04.java:15) Exception in thread “main” SE02.n1Exception.BalanceNotEnoughException: 钱不够 at SE02.n1Exception.Person.withDraw(Person.java:26) at SE02.n1Exception.Demo04.main(Demo04.java:21)

    总结:自定义异常还是比较简单的,新建一个自定义异常类,选择继承异常种类,再重写构造函数。然后在需要抛出异常的地方做判断,植入异常,具体语句:throw new xxxxxxException()

    Processed: 0.014, SQL: 9