我来自.net世界。抛出异常两种态度
我有一些关于java中异常的问题。
什么是抛出异常两种态度之间的尊重:
public void f() throws Exception {
//some logic
}
这:
public void f() {
//some logic
throw new Exception();
}
什么时候应该使用第一姿势和第二姿势?
我来自.net世界。抛出异常两种态度
我有一些关于java中异常的问题。
什么是抛出异常两种态度之间的尊重:
public void f() throws Exception {
//some logic
}
这:
public void f() {
//some logic
throw new Exception();
}
什么时候应该使用第一姿势和第二姿势?
在Java中,您需要指定您的方法的行为方式。这包括可能引发的异常。要声明,你的方法可以使用一个例外,throws
关键字(如你的第一个例子)。
请注意,只有从Exception
类派生的例外情况必须在这里描绘的(也有RuntimeExceptions
等Throwables
不需要进行描绘。More here)。
要抛出一个异常,你需要关键字throw
,然后是任何Exception
(准确地说,你可以抛出任何Throwable
)的实例。
一个有效的方法是:
public void foo() throws Exception {
throw new Exception();
}
有一个在使用这两个的差。假设第二种方法没有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
做它在第二个方式,如果你不介意它不是有效的Java。 –
第二个是无效的。你想抛出[新的异常()]'。 –
@cᴏʟᴅsᴘᴇᴇᴅ和'throws Exception'在方法签名上,因为你不能有一个未处理的检查异常。 –