【问题标题】:why don't we use throw new exception sometimes? [closed]为什么我们有时不使用 throw new exception? [关闭]
【发布时间】:2015-04-10 03:02:27
【问题描述】:

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

抛出新的 ServletException,java.io.IOException ;未在方法定义中使用。这是为什么 ?谁能告诉我为什么?我是 Java 新手。

在下面的代码中使用了 throw,为什么在上面抛出异常的方法中没有使用它。

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

【问题讨论】:

  • 投掷和投掷是两个不同的东西。谷歌他们
  • 它没有明确抛出ServletException,但它调用了其他方法。
  • 同样的原因我们写public int getNumberOfCats() {而不是public return 1; getNumberOfCats() {
  • 我的问题是为什么 throws 没有在 throws 方法中使用? .那么如果不能抛出异常,写 throws 的目的是什么?

标签: java oop servlets web-applications


【解决方案1】:

从字面上看,'throws' 本身意味着它应该与一个行为相关联。 'throw' 表示它应该与一个动作相关联。

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

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

前面提到的method 具有抛出CustomException (throws) 的特性,如果在method 主体内触发来做同样的事情(throw)。

【讨论】:

    【解决方案2】:

    throws Exceptionthrow new Exception(); 做完全不同的事情。

    throws Exception是方法签名的一部分,指定“这个方法允许抛出Exceptions”。

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

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

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

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

    public void test() {
        throws Exception;
    }
    

    【讨论】:

      【解决方案3】:

      throw new Exception“创建”一个异常,而throws Exception 只是将任何遇到的异常“抛出”给调用者方法。

      【讨论】:

        猜你喜欢
        • 2019-10-13
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        • 2012-02-27
        • 2018-02-27
        • 2012-04-15
        相关资源
        最近更新 更多