抛出异常两种态度

时间:2017-07-14 22:40:30

标签: java

我来自.net世界。

我对java中的异常有一些疑问。

两种抛出异常的态度之间的差异是什么:

public void f() throws Exception {
     //some logic
}

和此:

public void f() {
    //some logic
    throw new Exception();
}   

我什么时候应该采用第一态度和第二种态度?

2 个答案:

答案 0 :(得分:1)

在Java中,您需要指定方法的行为方式。这包括可能抛出的异常。要声明您方法可以使用throws关键字(如第一个示例中所示)。

请注意,此处必须仅显示源自Exception类的异常(还有RuntimeExceptions和其他Throwables不需要描述的内容。More here )。

要抛出异常,您需要关键字throw,后跟任意Exception的实例(确切地说,您可以抛出任何Throwable)。

有效的方法是:

public void foo() throws Exception {
    throw new Exception();
}

答案 1 :(得分:1)

使用这两者有所不同。假设第二种方法没有 s 。方法签名中使用的第一种方法throws表示此方法可以抛出哪种异常。您可以声明多个异常类。对于checked Exception,调用者可以通过捕获它来处理此异常,也可以通过在方法声明中声明另一个throws来重新抛出它。

public void f()throws IOException, SQLException { //some logic }

使用throw而不使用 s 的第二种方法在代码的任何部分中使用,只要您需要向调用者抛出特定异常,就会使用实例。

public void f(){  
  //some logic
 throw new ArithmeticException("sorry");  
}

您可以获得更多信息throw and throws in Java