为什么我们有时不使用抛出新的异常?

时间:2015-02-10 06:39:47

标签: java oop servlets web-applications

例如,在此方法中:protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException {}

抛出新的ServletException,java.io.IOException;未在方法定义中使用。这是为什么 ?任何人都可以告诉我为什么?我是java的新手。

使用下面的代码抛出中的

以及为什么它不会在抛出异常的上述方法中使用。

  class SomeClassName { 
        void show() throws Exception
           {
            throw new Exception();
            }
         }

3 个答案:

答案 0 :(得分:2)

throws Exceptionthrow new Exception();完全不同。

throws Exception是方法签名的一部分,并指定“允许此方法抛出Exception s”。

throw new Exception();是一个实际抛出异常的语句。

这是无效的(因为throw不能成为方法签名的一部分):

public void test() throw new Exception(); {
}

并且这也不是(因为throws Exception不是声明):

public void test() {
    throws Exception;
}

答案 1 :(得分:1)

从字面上看,' 抛出'本身意味着它应与行为相关联。 '的'意味着它应与行动相关联。

同样,throws作为一种行为与method签名相关联。

public void test() throws CutomException{
    //do whatever
    throw new CustomException
}

前面提到的method具有抛出CustomExceptionthrows)的特征,如果在method正文内被触发则执行相同的操作(throw)。< / p>

答案 2 :(得分:0)

throw new Exception&#34;创建&#34;一个例外,而throws Exception只是&#34;抛出&#34;任何遇到的调用方法异常。