日期:2014-05-20  浏览次数:20941 次

几个QQ群都不能解释的问题:自定义Exception的子类(子类继承Exception类,并未作任何修改),却不能捕捉原来Excepton能捕捉的异常,为什么?
package com.demo;



public class Demo1 {

/**
* @param args
* @throws Exception 
*/
public static void main(String[] args) 
{
// TODO Auto-generated method stub
Demo demo=new Demo();
try{

demo.test();

}catch( MyException e){ // 只想知道这个地方,为什么MyException不能代替Exception
// MyException是直接继承Exception类,并未作任何修改,却不能捕捉原来Excepton能捕捉的异常,为什么?

System.out.println("捕捉自定义异常成功");


}finally{
//demo.show();
}
}

}
class Demo 
{
int i=0;
public void test() throws MyException
{
System.out.println(1/0);

}
}

//定义异常类
class MyException extends Exception
{
public MyException(){

super();

}
}



补充: 
  只求高手给出原因,我只想知道原因,如果可以简单该,应该怎么改?要改动很多就算了!
   
  因为想知道 如代码中解释那行 所提出的问题的原因。

  希望有人知道,CSDN应该强人多的

------解决方案--------------------
代码修改如下:
Java code

public class Demo01 {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo demo = new Demo();
        try{
            demo.test();
        }catch(MyException me){
            System.out.println(me.getMessage());
            System.out.println("捕捉自定义异常成功");
        }
            
    }

}

class Demo {
    int i = 0;

    public void test() throws MyException{
        try{
            System.out.println(1 / 0);
        }catch(Exception me){
            throw new MyException("出现了自定义异常");
        }

    }
}

// 定义异常类
class MyException extends Exception {
    public MyException(String mesg) {
        super(mesg);

    }
}