1>是,然后向上层传递直至被捕获.
2>throws Exception只是声名了一下,告诉调用他的人,要捕获异常,而try{}catch(){}直接就捕获了.
调用时就不 用考虑了.
3>弊端就是你分析错误的时候就不知道具体是什么异常了.

解决方案 »

  1.   

    有这样一段论述:不要捕获泛型例外
    在复杂的软件中,经常会有一些特定的代码块执行时会抛出多种不同例外的方法。动态装入一个类和实例化一个对象都可能会产生几个不同的例外,包括ClassNotFoundException, InstantiationException, IllegalAccessException, 和 ClassCastException。
    一个繁忙的程序员在遇到这种情况时可能简单的把方法调用包在一个只会捕获泛型例外Exception的try/catch块,而不是添加四个不同的catch块到try块后面(看下面的代码清单3)。这看起来似乎无可置否,却会产生一些无意识的副面效果。例如,如果className()是null,那么Class.forName()将会抛出一个NullPointerException例外并在这个方法中被捕获。在这种情况下,catch块将捕获此例外虽然它从没打算去捕获这样一个例外,只是因为NullPointerException是RuntimeException的一个子类,而且RuntimeException又是Exception的一个子类。所以一个普通的catch(Exception e)将会捕获所有RuntimeException的子类,包括NullPointerException, IndexOutOfBoundsException, 和ArrayStoreException。通常,一个程序员并不打算去捕获这些例外。为什么它这里说这个NullPointerException不需要被扑获呢?如果不扑获的话,会发生什么问题呢?
      

  2.   

    是不是说如果一个异常被扑获了,那么程序就会继续执行try以外的语句,如果一个异常发生了,而没有被扑获,那么就会停下来而不去执行别的语句了
      

  3.   

    异常若被捕获,程序将执行CATCH中的语句,如果程序有FINALLY语句,还将执行FINALLY中的语句,然后返回调用它的程序,如果没有程序调用它,程序将退出,始终不会执行异常发生处与CATCH之间的语句.
      

  4.   

    1。不是异常如果没有被扑获(catch),那么程序就会在在发生异常的地方停止?
       是的,但如果有finally语句,只直接用出异常那行跳到finally语句里执行.2。 void cleanupConnections() throws Exception{
    }

    在try{}catch(){}
    中扑获异常有什么不同的地方,即使用try{}catch(){}的好处是什么?
    第一种直接扔给了调用者,第二种是自己拿到可以做相应的处理,比如写文件出错,可以将文件删掉之类的.3。如果我扑获异常的时候笼统的使用一个Exception,而不是具体到什么异常,比如IOException,SQLException,这样的弊端在哪里?对异常的扑获有一个原则就是不能处理的异常不要去捕获,如果你只笼统的使用一个Exception,那么通常情况下你就不知道你拿到的是什么异常,也谈不上处理了.