java – 泛型类型的自定义异常

参见英文答案 >
Why doesn’t Java allow generic subclasses of Throwable?                                    5个

我已将java类中的Exception包装到自定义异常中.我希望我的自定义异常接收两个参数,一个是消息,另一个是列表.

但问题是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

或者,还有更好的方法?

最佳答案 您应该使用接口来分组失败记录的行为.如果有特定原因你不能这样做,很可能你的设计有问题.在这种情况下,您应该创建几个异常类.

这是一个很好的帖子,可以理解为什么Java不允许throwable的子类:https://stackoverflow.com/a/501309/3425744

点赞