簡體   English   中英

從類的多種方法中捕獲異常

[英]Catching Exceptions From Multiple Methods Withing the Class

在Java中,我有一個類,其中包含幾個拋出相同自定義異常的方法(自定義異常擴展了'Exception'類):

private void setAColor(float r, float g, float b, float a) throws AnException {}
private void setBColor(float r, float g, float b, float a) throws AnException {}
private void setCColor(float r, float g, float b, float a) throws AnException {}

我希望能夠捕獲它們並在類中處理它們,而不是讓用戶處理這些異常。 每個方法異常都將以完全相同的方式捕獲。 我不想在每個方法中都使用完全相同的try / catch方法塊。 有沒有辦法可以在方法體外捕獲這些異常,但是在類內?

感謝您的時間,即使您無法幫助我。

附上更多信息:
可以調用這些方法直到某個點:在調用將變量“isImmutable”設置為true的方法之后,這些方法應該不再能夠更改有關該對象的任何內容。 因此,如果在“isImmutable”設置為true之后調用其中一個方法,則它們應該拋出一個名為“ImmutableException”的異常。 對於/這個特定的實現/,我希望能夠自己處理這些,而不是去代碼中調用這些方法的每一個點,然后以完全相同的方式處理它們。

我不想在每個方法中都使用完全相同的try / catch方法塊。

然后不要拋出異常。

有沒有辦法可以在方法體外捕獲這些異常,但是在類內?

沒有。

對於/這個特定的實現/,我希望能夠自己處理這些,而不是去代碼中調用這些方法的每一個點,然后以完全相同的方式處理它們。

這是沒有意義的。 如果檢測到錯誤,您打算如何報告?

在調用將變量“isImmutable”設置為true的方法之后,這些方法應該不再能夠更改有關該對象的任何內容。 因此,如果在“isImmutable”設置為true之后調用其中一個方法,則它們應該拋出一個名為“ImmutableException”的異常。

您是否考慮過將您的異常作為RuntimeException的子類? 然后調用者不需要聲明異常處理程序 - 如果沒有處理程序,程序將因“未處理的異常”而終止。

您可以將上述方法轉換為調用的存根方法

setColorDelagator(char abc, ...)

代表誰

setColorAWithErrorHandling
setColorBWithErrorHandling
setColorCWithErrorHandling 

在try / catch中。

我同意這不是最佳選擇,但我不確定更好的方法。

要從另一個角度來看待它,您是否考慮過切換到工廠模式? 不要將調用將isImmutable設置為true,而是讓它調用以獲取isImmutable為true的實例...並且該方法返回不具有可用setter的類的不同版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM