创建一个异常类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中不是就捕获不到异常了吗?求指教,谁会教教我吧
创建一个运程程序类,该类包含多个方法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中不是就捕获不到异常了吗?求指教,谁会教教我吧
这样的话就会把这个异常抛给上级~~直接TRY CATCH
或者在最外面那层捕获异常就行了~~
main方法也会捕获到Method C抛出的MyException对象两次。
这两句话我不是很清楚 啥意思啊?
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函数自己改哈
+1.在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");
}这样抛出,在main方法也捕获不到吧 ????????
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();
}
}