2016-02-04 147 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