2016-02-04 74 views
3

我已將我的java類中的異常包裝到自定義異常中。我希望我的自定義異常接收兩個參數,一個是消息,另一個是列表。自定義異常與通用類型

但問題是listOfFailedRecords必須是通用的。

喜歡的東西,

throw new MyException("Failed due to dependency", listOfFailedRecords) 

而且MyException類會是什麼樣子,

public class MyException<T> extends Exception { 
    List<T> listOfFailedRecords; 
    MyException(String message, List<T> listOfFailedRecords) { 
     super(message); 
     this.listOfFailedRecords = listOfFailedRecords; 
    } 
} 

但問題是Java不允許泛型類擴展Exception類。

現在該怎麼辦? 我應該通過對象的列表,以該異常作爲

List<Object> listOfFailedRecords 

還是有更好的辦法?

+1

執行失敗的記錄,沒有共通的地方,你可以使接口呢?如果不是這樣,那麼使用不同的異常類來提高可維護性可能是明智的。 – Thomas

+0

*「還是有更好的辦法嗎?」 - 不,沒有。 –

回答

1

您應該使用一個接口來分組失敗記錄的行爲。如果有一個特定的原因你不能這樣做,那麼你的設計可能會有問題。在這種情況下,你應該創建幾個異常類。

這裏是一個很好的職位瞭解爲什麼Java不允許的拋出子類:https://stackoverflow.com/a/501309/3425744