本帖最后由 卜弦 于 2013-10-10 14:09 编辑
- class FuShuException extends RuntimeException
- {
- FuShuException(String msg)
- {
- super(msg);
- }
- }
- class Demo
- {
- int div(int a,int b)throws ArithmeticException//throws FuShuException //此处为“抛”。
- {
- if(b<0)
- throw new FuShuException("出现了除数为负数了");
- if(b==0)
- throw new ArithmeticException("被零除啦");
- return a/b;
- }
- }
- class ExceptionDemo
- {
- public static void main(String[] args)
- {
- Demo d = new Demo();
- try
- {
- int x = d.div(4,0);
- System.out.println("x="+x);
- }
- catch (RuntimeException e) //此处为“接”。
- {
- e.printStackTrace();
- }
- System.out.println("over");
- }
- }
复制代码疑问:我试过如下几种对应情况
抛 接 编译通过否
Exception Exception e 通过
Exception Thowable e 通过
Exception RuntimeException e 否
Exception ArithmeticException e 否
Exception FuShuException e 否
当试到这里的时候我猜想“抛”的类型应该是“接”的子类或同一级别。于是又尝试了一下情况又觉得糊涂了
抛 接 编译通过否
FuShuException RuntimeException e 通过 (这里前者是后者的子类。。。。)
ArithmeticException RuntimeException e 通过 (这里前者是后者的子类。。。。
试了这两组之后我觉得应该是我想错了。。。。。。
那么请问各位我是不是转牛角尖了?这两者之间要满足什么样的关系么? |