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

java的一些题目
阅读程序题, 写出结果并写出原因

class MyException extends Exception {
  public MyException(String message) {
  super(message);
  }
}
public class Test {
  private static void fun1() throws MyException {
  throw new MyException("An MyException object is thrown in fun1().");
  }  
  private static void fun2() throws MyException {
  try {
  fun1();
  }
  catch(NullPointerException ex) {
  System.out.println("NullPointerException:"+ex.getMessage());
  }
  finally {
  System.out.println("Go through finally code in fun2().");
  }
  }  
  public static void main (String[] args) { 
  try {
  fun2();
  }
  catch(MyException ex) {
  System.out.println("MyException:"+ex.getMessage());
  }
  catch(Exception ex) {
  System.out.println("Exception:"+ex.getMessage());
  }
  }
  }


------解决方案--------------------
调用fun2(),然后调用fun1(),在fun1()中会抛出一个异常
MyException,但是fun2()尤其定义可知,它并不会进行处理,
而是在其执行完之后将异常再抛出去(抛给调用者),所以
fun2()会执行到finally语句块,先输出"Go through finally ...",
然后再回到main方法中调用fun2()后捕获异常的catch(MyException),
所以也就会输出“MyException: An MyException ...”。
------解决方案--------------------
输出:

Go through finally code in fun2().
MyException:An MyException object is thrown in fun1().