 创建一个异常类MyException。
 创建一个运程程序类,该类包含多个方法Method A、Method B、Method C。这些方法形成三级调用,主方法main调用Method A,Method A调用Method B,Method B调用Method C,最后Method C会抛出一个MyException的实例对象。
 Method A会捕获到Method C抛出的MyException对象两次。
 main方法也会捕获到Method C抛出的MyException对象两次。
 其运行结果如下所示:
          Method A called!
          Method B called!
          Method C called!
          Exception throw in MyException!
          Exception caught in Method A
          Exception finally statement in Method A
          Exception caught in Main
          Exception finally statement in Main
以下是我的代码:public class MyException {    public static void main (String[] args) {
  
new MyException().MethodA();
    
}
    
    public void MethodA(){
     System.out.println("Method A called!");
     try{
     this.MethodB();
     }catch(NewException e){
     System.err.println(e);
     System.out.println("Exception caught in Method A");
     }finally{
     System.out.println("Exception finally statement in Method A");
     }    }
    
    public void MethodB()throws NewException{
     System.out.println("Method B called!");
     this.MethodC();
    }
    
    public void MethodC()throws NewException{
     System.out.println("Method C called!");
     throw new NewException();
    
    }
    
}class NewException extends Exception{

public String toString(){
return ("Exception throw in MyException!");
}
}无法做出题目需要的显示结果,因为Method A中已经捕获异常了Main中不是就捕获不到异常了吗?求指教,谁会教教我吧
          

解决方案 »

  1.   

    NewException extends Exception 类申明的时候就不要申明抛出异常了·~~
    这样的话就会把这个异常抛给上级~~直接TRY CATCH
    或者在最外面那层捕获异常就行了~~
      

  2.   

    methodA catch到异常后再抛给main不就行了 你看看methodB不就是抛出去了
      

  3.   

    Method A会捕获到Method C抛出的MyException对象两次。
     main方法也会捕获到Method C抛出的MyException对象两次。
    这两句话我不是很清楚  啥意思啊?
      

  4.   


    public class MyException {    public static void main (String[] args) {
      
            new MyException().MethodA();
            
        }
        
        public void MethodA()throws NewException{
            System.out.println("Method A called!");
            try{
                this.MethodB();
            }catch(NewException e){
                System.err.println(e);
                System.out.println("Exception caught in Method A");
                throw e        }finally{
                System.out.println("Exception finally statement in Method A");
            }    }
        
        public void MethodB()throws NewException{
            System.out.println("Method B called!");
            this.MethodC();
        }
        
        public void MethodC()throws NewException{
            System.out.println("Method C called!");
            throw new NewException();
            
        }
        
    }class NewException extends Exception{
        
        public String toString(){
            return ("Exception throw in MyException!");
        }
    }
    main函数自己改哈
      

  5.   

    我x,Java代码里不能标颜色...
      

  6.   


    +1.在methodA中捕获处理完毕后,再重新抛出就可以啦!
      

  7.   

    a方法捕获后按照楼上的方法:
     public void MethodA()throws NewException{
            System.out.println("Method A called!");
            try{
                this.MethodB();
            }catch(NewException e){
                System.err.println(e);
                System.out.println("Exception caught in Method A");
                throw e        }finally{
                System.out.println("Exception finally statement in Method A");
            }这样抛出,在main方法也捕获不到吧 ????????
      

  8.   


    public class Test{
        
        public static void main(String[] args){
            Test test = new Test();
            try{
                test.MethodA();
            }catch(MyException e){
                System.out.println(" Exception caught in Main");
            }finally{
                System.out.println(" Exception finally statement in Main");
            }
        }
        
        private void MethodA() throws MyException{
            System.out.println("Method A called!");
            try{
                this.MethodB();
            }catch(MyException e){
                System.out.println(" Exception caught in Method A");
                throw new MyException(); 
            }finally{
                System.out.println(" Exception finally statement in Method A");
            }
        }    private void MethodB() throws MyException{
            System.out.println("Method B called!");
            this.MethodC();
        }    private void MethodC() throws MyException{
            System.out.println("Method C called!");
            throw new MyException();
        }
    }