依靠超类抛出异常

Java开发者

我正在用Java扩展列表,但是我不确定如何处理异常。

class InfiniteList extends ArrayList<Integer> {

    InfiniteList(int size) {
        super(size);
     //   if (size < 0) throw new IllegalArgumentException("The size should not be less than zero.");
        add(size);
    }

在这里,我知道到目前为止,如果size为负数,则ArrayList构造函数将引发异常。我的子类实现希望完全相同的行为。到目前为止,世界是美好的。

现在稍后有人来更改ArrayList以接受负数大小,但我InfiniteList失败了。所以我的解决方案是在中添加/复制异常处理逻辑InfiniteList但是,这带来了代码重复的问题。所以我有两个选择。

  1. 相信超级阶级吗?

  2. 重复的代码?

鉴于这Composition不是一种选择,因此在这里可以执行的常见/最佳做法是什么。

杰里米·杰布朗

如果您真的不能写作,而且我不确定为什么不能写作,那么请相信超级类。特别是考虑到这是一个Java API类。

  • 为所有经验丰富的开发人员所熟知
  • 有合同是极不可能改变的

重复代码几乎总是IMO最糟糕的选择。在类似的情况下,我能为之辩解的唯一原因是,如果该类正在扩展一个执行不佳的类,并且您试图将其问题隐藏在外部世界中,或者抛出了您确实不愿意的异常不想被耦合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章