import java.io.FileNotFoundException;public class Main {
public static void main(String[] args) throws Exception {

try {
throw new NullPointerException();
}
finally {
throw new FileNotFoundException();
}
}
}PS:这些代码只是为了提问而用,实际上不会这样写,问题如下:
按以上的代码运行,最后控制台打印出的异常是FileNotFoundException,那么NullPointerException哪去了?它是被finally块中抛出的异常冲掉了还是根本没有抛出?

解决方案 »

  1.   

    try{}中的异常会在catch中处理,你这里没有catch模块,自然不会打印出NullPointerException
      

  2.   

     而且这条语句throw new FileNotFoundException();也至少得有try{}模块包围
      

  3.   

    不是哟,如果没有catch语句,只是这段代码没有捕捉异常而已,异常会抛给调用该函数的函数,因为这是主函数,所以异常就抛给JVM了,不信你试试注释掉finally里面的异常抛出语句,NullPointerException会打印出来的
      

  4.   

    丢失异常,很多书上都有提到,我记得thinking in java中就有
      

  5.   

    我替LZ 百度了:http://www.cnitblog.com/blueyb/articles/56048.html
    具体内容看Thanking in Java第四版268页。——第一次引用这个垃圾书上的内容
      

  6.   

    不会吧?不知你见过这样的写法没?在catch块中将捕捉到的异常包装再抛出,照您的说法,难道还必须在catch里面再try-catch一下?个人认为,try-catch的使用只是限定需要处理的异常的产生范围以及捕捉的类型,既然并没有打算自己处理异常干嘛用catch,不用catch我又为什么要用try呢?
      

  7.   

    嗯,谢谢了,感觉是这个异常丢了,但没资料佐证,不敢确定,所以来提问了。。= =、【为什么我也百度了却没找到?打开方式不对?
    PS:Think In java是垃圾书?貌似我们面向对象程序设计导论的课本就是这个,虽然没用过。。