簡體   English   中英

Java方法包含另一個拋出異常的方法

[英]Java method contains another method throws exception

在方法A中,有方法B。方法B引發異常,但是方法A編譯后即使沒有捕獲異常或引發異常,也可能嗎?

方法B如下所示:

MethodB() throws SomeException{
   if(Some)
        doneSomething
        return
   else if(some)
        donesomethingElse
        return 
   throw SomeException  
}

如果SomeException擴展RuntimeException 然后即使簽名看起來像你也不需要抓住它。

另請注意,在這種情況下,您可以刪除throws SomeException 在這里閱讀更多。

是的,有一些未經檢查的例外,可能不會被抓住/重新拋出。

查看本教程 - 未經檢查的異常

即使SomeException是已檢查的異常,也可能由於單獨的編譯而發生。

假設你寫了一個類:

public class B {
  public static void foo() {
  }
}

然后是一個調用它的類:

public class A {
  public static void main(String[] args) {
    B.foo();
  }
}

然后說:

javac A.java
java A

一切都很好。 現在換B:

public class B {
  public static void foo() throws java.io.IOException {
    throw new java.io.IOException();
  }
}

這次只是在運行之前編譯B:

javac B.java
java A

你得到:

Exception in thread "main" java.io.IOException
    at B.foo(B.java:4)
    at A.main(A.java:4)

在現實世界中,當個別.jar文件被維護者修改后更新時會發生這種情況。維護人員不了解添加更多throws子句所導致的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM