从重写的Java类方法中抛出异常

时间:2015-10-20 08:39:32

标签: java oop exception polymorphism override

我想扩展Java的HashMap<K, V>课程。我覆盖put(...)方法,我想在某些情况下抛出异常。

由于基类的put方法没有抛出异常,因此出现编译错误。

最佳解决方案是什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

您可以在子类中创建一个不会覆盖put的方法,但必要时会调用原始put()。这种方法将被允许抛出任何你想要的例外。

或者您可以抛出put已经可能抛出的一个未经检查的例外(UnsupportedOperationExceptionClassCastExceptionNullPointerExceptionIllegalArgumentException)或任何其他未经检查的例外情况异常(虽然建议不会这样,因为它们不会记录在Map界面中)。

来自Map::put Javadoc:

  

<强>抛出:

     

UnsupportedOperationException - 如果此地图不支持执行操作
   ClassCastException - 如果指定键或值的类阻止它存储在此映射中
   NullPointerException - 如果指定的键或值为null并且此映射不允许空键或值
   IllegalArgumentException - 如果指定键或值的某些属性阻止它存储在此地图中

答案 1 :(得分:1)

您始终可以抛出源自RuntimeException

的异常