0

我正在考慮通過異常實現更好的錯誤處理方式。當我深入我的代碼並想返回錯誤時,我有兩種選擇:錯誤處理的最佳方式

  1. 拋出一個擴展運行時異常的異常。
  2. 傳遞錯誤消息對象以及我的回覆。這允許每個級別在需要時通過查看錯誤消息來處理錯誤。

我喜歡1。但是,讓我們說我創建一個接口:

public interface Interface { 
    method1(); 
    method2(); 
} 

現在,在這種類型的合同,我還沒有看到,申報方法爲接口:

method1() throws ExtendedRuntimeException; 
method2() throws ExtendedRuntimeException; 

指定實現需要處理擴展運行時異常的更簡潔的方法是什麼?

+0

一般來說,聲明'拋出'的方法是'我不會處理異常'。因此,沒有在合同中明確指定這個方法的方法應該被認爲是這樣的處理程序。 – Dan 2012-04-19 22:44:23

回答

0

您需要一個組合的方法。 在應用程序中設計異常處理機制時,您需要設計強制impl處理異常的接口。這些是檢查的例外。

此外,您將不得不事先決定處理所有異常或決定如何處理異常的圖層。所有較低層通過例外,即將例外泡起。你可以通過創建你的異常子類來完成它,或者直接拋出異常。最好的辦法是創建一個例外子類,其中包含更多詳細信息,如錯誤代碼/消息等。

是的,許多設計都有接口,這些接口的方法定義都附帶了throws。

HTH 〜Ayusman

0

Sudoer,恕我直言,你無法控制你的界面處理運行時的實施者(a.k.a unchecked)異常。

就像@Ayusman提到你可以聲明並要求實現者處理檢查的異常,但對於運行時異常,它總是有義務不需要聲明它。另外,對於作爲實現者的未經檢查的異常,我可以拋出自己的運行時異常,作爲您尚未聲明的接口設計器。

這是真的,因爲你只聲明一個合約,但你沒有足夠的上下文來處理可能的運行時異常。希望我能在這裏傳達這個想法。

我發現這些有用的:

希望有所幫助。