学习异常处理时的问题


在学习毕向东老师_JavaSE-第09天-11-面向对象(RuntimeException)的课程时

边学边跟着写了如下代码:

class D {
    public int div(int a, int b)  {//第二行
         if(0==b)
               throw new ArithmeticException("000000000");
         return a/b; 
    }
}
class A {
    public static void main(String[] args) {
         D d = new D();
         int x = d.div(4,0);
     }
}

课程中老师讲ArithmeticExceptionRuntimeException的子类
不用在函数上声明也可编译通过,
问题来了,
以上代码我怎么也不能编译通过,报错信息:
A.java:4: 错误: 未报告的异常错误ArithmeticException; 必须对其进行捕获或声明以便
抛出
                        throw new ArithmeticException("000000000");
                        ^
1 个错误

相当郁闷啊,把ArithmeticException换成RuntimeException却是OK的.
把第二行改为 public static void main(String[] args) throws ArithmeticException {
也还是不行,
只有加上上面语句之后再在下面的语句上TRY一下才能通过编译.

经过一番研究才找到了原因,原来是这样的,在上面代码之前,我编译过如下代码:

class ArithmeticException extends Exception {
      ArithmeticException(String msg) {
              super(msg);
      }
}
class D {
    public int div(int a, int b) throws ArithmeticException {
         if(0==b)
               throw new ArithmeticException("000000000");
         return a/b; 
    }
}
class A {
    public static void main(String[] args) {
         D d = new D();
         try {
               int x = d.div(4,0);
         }
         catch (ArithmeticException e) {
                System.out.println(e.toString());
         }
     }
}

相当于自己重写了一个ArithmeticException类
这样一来,在源目录下就产生了一个ArithmeticException.class的文件,然后在编译一楼的代码时,就直接在同目录下找到了这个文件,结果就报错啦!!
一点经验,共勉之!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值