簡寫:當重寫的方法不會拋出異常時,如何拋出異常(或者乾淨利落的清理異常處理;或者至少是骯髒地強制執行以停止) ?重寫方法不會拋出異常時的異常處理
上下文:我們擁有一個可以使用Java「宏」自動化的專有軟件的許可證。用戶定義的宏必須是這個形式:
public class MyMacro extends SoftwareMacro {
public void execute() {
// user code goes here
}
}
即該盤區SoftwareMacro
並且具有稱爲execute
方法,它覆蓋基類的execute
的類。這個重要的execute
的內容是什麼得到...以及當宏被「播放」時執行。
但是被覆蓋的execute
方法顯然不會拋出任何異常。
execute() in com.mycompany.mypackage.MyMacro cannot implement execute() in
somesoftware.base.SoftwareMacro
overridden method does not throw java.lang.Exception
也許這是幼稚的,但在發展中,我通常喜歡有適當的異常類型泡到頂部和力停止執行,這樣我可以看到他們,並繼續調試。這顯然不是一種選擇。
我是不是應該用RuntimeException
來代替? (因爲RuntimeException
不需要指定)這感覺有點草率,並且是基類方法契約的「精神違反」。
P.S.不,我不能更改被覆蓋的方法的源代碼。
清潔的方法是有一個集中的「例外」處理這將檢測從內部異常的「養」您的覆蓋方法並暫停應用程序執行。實用的方法是拋出一個RuntimeException。 – mcfinnigan
@DaveHowes - 是的,你在誤讀它,對不起。 Java要求重寫方法的異常規範是重寫方法的真正子集;一個空集是課程的一個真正的子集。你不需要拋出與你的超類相同的異常。 –