[英]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.