2017-07-14 69 views
-6

我来自.net世界。抛出异常两种态度

我有一些关于java中异常的问题。

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

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

这:

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

什么时候应该使用第一姿势和第二姿势?

+0

做它在第二个方式,如果你不介意它不是有效的Java。 –

+0

第二个是无效的。你想抛出[新的异常()]'。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ和'throws Exception'在方法签名上,因为你不能有一个未处理的检查异常。 –

回答

1

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

请注意,只有从Exception类派生的例外情况必须在这里描绘的(也有RuntimeExceptionsThrowables不需要进行描绘。More here)。

要抛出一个异常,你需要关键字throw,然后是任何Exception(准确地说,你可以抛出任何Throwable)的实例。

一个有效的方法是:

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

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

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

第二种方法,使用throw没有小号在后面的实例时,你需要抛出一个特定的异常给调用者的代码的任何部分使用。

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

你可以得到更多的信息throw and throws in Java