几个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);
}
}