2015-04-22 56 views
0

有可能拋出函數本地類作爲例外。這是好還是不好?應該將在方法內部定義的本地類作爲Exception引發嗎?

我的意圖是解釋異常上下文而不是異常類的類型。

class A { 
    void method1() throws IOException { 
     class Method1IOException extends IOException { 
     } 
     throw new Method1IOException(); 
    } 

    void method2() throws IOException{ 
     class Method2IOException extends IOException{ 
     } 
     throw new Method2IOException(); 
    } 
} 
+1

你爲什麼不自己嘗試一下? – Bubletan

+1

我完全不明白你。如果你想拋出一些東西,它必須擴展[Throwable](https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html)。方法是沒有對象的,所以它們不能被拋出,如果這就是你要求的。 – Turing85

+0

@ Turing85:查看代碼--OP正在討論在方法中聲明異常類,並聲明該方法可以拋出異常。它一切正常。 –

回答

2

假設extends是在這裏你的方法聲明throws一個錯字。

您不能在該範圍內拋出未知的Exception,這將是您的方法的本地範圍(與本例中您的類A的實例相比)。

因此,無論您的本地Exception小號延長RuntimeException,或者您throws子句必須拋出一個普通Exception(或Throwable)。

無論如何,我不會推薦這種做法,除非你永遠不會再使用本地Exception - 即使這樣......

語境應該通過編程來的消息中表示,並在堆棧跟蹤自動,但在這種情況下,它只會給你的堆棧跟蹤添加一些噪音。

相關問題