use*_*636 13 java interface exception
我正在定义一个新的接口API ...诚然,这不是我经常做的事情.我想定义接口方法来抛出异常,为实现者提供一些灵活性.然后,他们可以选择抛出异常,抛出更具体的Exception子类,或者根本不抛出任何东西.我已经阅读了几次虽然很好地允许实现类这种灵活性,但使用"throws Exception"定义接口方法也是不好的.相反,建议将Exception(例如MyException)子类化并抛出子类.对这种做法的解释缺乏细节,那么有人可以详细说明这种最佳做法吗?谢谢.
Ber*_*t F 12
我可以尝试给实现者一些灵活性,但异常是API的一部分,所以你应该考虑一下(检查的)异常是有意义的.
通过说throws Exception,你没有帮助界面的客户了解预期会发生什么样的故障,使他们有机会对他们作出适当的反应.您可以考虑接受一个方法参数,Object以允许实现者决定他们可以接受哪些参数.它对实现者有好处,但对于界面的客户来说却是一场噩梦.
之所以说声明抛出基类的接口方法Exception是不好的做法,是因为它实际上会使抛出该基类的实例成为接口的合法实现,这显然是您想要避免的。
这就是为什么您只能在签名中使用专用/自定义异常类型。
我不会说接口不应该提前声明抛出任何异常,正如有人在之前的回答中所说,因为接口实际上不是自由浮动的。
您作为接口的声明者,以某种方式调用或使用这些方法,并断言您的代码将如何使用这些方法。
它实际上是您创建的合同。例外情况是该合同的一部分。事实上,使用该接口的人(而不是实现它的人)将在实现存在之前按照他的工作方式完成。
| 归档时间: |
|
| 查看次数: |
15533 次 |
| 最近记录: |