【问题标题】:Difference between throw and throws in Java? [duplicate]Java 中的 throw 和 throws 的区别? [复制]
【发布时间】:2014-10-26 09:09:36
【问题描述】:

谁能通过一个例子清楚地说明 Java 异常处理中 throw 和 throws 之间的区别?我试过谷歌搜索,但无法得出结论。请帮忙

【问题讨论】:

  • @suresh atta 很有趣

标签: java throw throws


【解决方案1】:
  1. throws 子句用于声明异常,throw 关键字用于显式抛出异常。

  2. 如果我们从语法上看,throw 后跟一个实例变量,throws 后跟异常类名。

  3. 关键字throw用于方法体内部调用异常,throws子句用于方法声明(签名)。

例如

投掷

throw new Exception("You have some exception")
throw new IOException("Connection failed!!")

投掷

public int myMethod() throws IOException, ArithmeticException, NullPointerException {}
  1. 您不能使用throw 声明多个异常。您可以声明多个异常,例如public void method() throws IOException,SQLException。

  2. 检查的异常不能用throw 传播,只是因为它显式地用于引发特定的异常。可以使用throws 传播已检查的异常。

异常传播:异常从一个方法传播到另一个方法,沿着调用堆栈向上传播,直到它被捕获。因此,如果 a() 调用 b(),b() 又调用 c(),c() 又调用 d(),并且如果 d() 抛出异常,则异常将从 d 传播到 c 到 b 到 a,除非这些方法之一捕获例外。 what is exception propagation?

【讨论】:

  • 在 java 中使用 Throw 关键字不能抛出多个异常,但使用 throws 可以声明多个异常。
【解决方案2】:

throw 用于抛出实际的 Exceptionthrows 声明它可能会抛出 Exception 的方法。

public int findMax(int[] array) throws Exception{
    if(array==null)
       throw new NullPointerException(...);
    ...
}

【讨论】:

    【解决方案3】:
    public void someMethod(List<Foo> someList) throws SomeException { 
        if (someList.isEmpty()) throw new SomeException();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2011-04-17
      • 2018-05-30
      • 2013-10-12
      • 2017-04-12
      • 2011-11-04
      • 1970-01-01
      • 2018-04-09
      • 2020-08-03
      相关资源
      最近更新 更多