2020-02-22 使用Java创建自己的异常子类

先贴一段代码

// This program creates a custom exception type.
class MyException extends Exception {
    private int detail;
    MyException(int a) {
        detail = a;
    }
    public String toString() {
        return "MyException[" + detail + "]";
    }
}

class ExceptionDemo {
    static void compute(int a) throws MyException {
        System.out.println("Called compute(" + a + ")");
       if(a > 10)
          throw new MyException(a);
       System.out.println("Normal exit");
    }
    public static void main(String args[]) {
       try {
           compute(1);
           compute(20);
        } catch (MyException e) {
            System.out.println("Caught " + e);
        }
    }
}

结果

Called compute(1)
Normal exit
Called compute(20)
Caught MyException[20]

现在我们来分析这段代码
①调用compute(1), 输出Called compute(1)
②if判断,不满足条件,
③接着输出 Normal exit
④返回主函数,调用compute(20),输出Called compute(20)
⑤满足if判断,抛出异常,进入到自己创建的异常中,detail=a;
⑥回到throw new MyException(a);结束,返回到主函数。
⑦捕获抛出的异常,打印输出Caught MyException[20]

注意:⑦没有调用MyException的toString方法,为何能打印出结果?
分析:在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System,out.println()里面为一个对象的引用时,自动调用toString方法讲对象打印出来。如果重写了tostring方法则调用重写的toString 方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值