![](/img/trans.png)
[英]@throws in Scala does not allow calling Java to catch correct exception type
[英]Why does java allow a method which always throws an exception to declare the return type as that exception?
為什么java允許一個總是拋出異常的方法將返回類型聲明為異常? 以下兩種方法都有效: -
public RuntimeException alwaysFails() {
throw new RuntimeException("failed");
}
public void alwaysFailsButVoid() {
throw new RuntimeException("failed");
}
允許這個有什么好處?
您可以將任何類型聲明為方法的返回類型。 由於該方法永遠不會正常返回,因此這是完全正確的(但具有誤導性)。
請注意,Java編譯器通常無法確定您的方法何時可能正常返回(由於暫停問題無法解決)。
允許這樣做的好處是允許您子類化類或繼承已預先指定該方法的返回類型的接口。 這對於面向對象的編程至關重要。
回歸和投擲不是一回事,他們是獨立的。
我沒有看到這個問題。 返回類型和可能的異常之間沒有編譯時交叉檢查。 沒有關系。 編譯器只檢查查看哪些檢查異常是可能的,以及關於異常聲明了哪些異常(顯然,編譯器除此之外還做了很多)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.