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应该强人多的
* @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应该强人多的
System.out.println(1/0); 你并没有处理发生异常时 抛出MyException
{
try {
System.out.println(1/0);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
throw (new MyException()) ;
} }
* @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); }
}
int i = 0; /*
public void test() throws MyException{
try{
System.out.println(1 / 0);
}catch(Exception me){
throw new MyException("出现了自定义异常");
}
}
*/
}
你不明白throws的用法,在用throws的时候,在方法体之中,是一定明确的抛出了异常的,即你可以简单的理解为,方法体之中出现了throw,那么方法才会用throws来标识抛出的对应的异常。你自己写的test()方法: public void test() throws MyException{
System.out.println(1 / 0);
}这里方法体之中并没有把System.out.println(1/0)的异常信息抛throw出去,所以你这里的throws如同虚设,只是个鸡肋。所以在执行main()方法的时候,demo.test()出现异常,就不再运行了。抛出的也是Java Virtual Machine自动匹配的异常信息。希望你能看的明白。
try{throw new MyException();}
catch(MyException mye){System.out.println("捕捉自定义异常成功");}
}
catch里面嵌套一个try,catch就OK了。