【问题标题】:Kotlin - Document exception thrown by an interface methodKotlin - 接口方法引发的文档异常
【发布时间】:2018-05-10 18:04:30
【问题描述】:

由于 Kotlin 没有检查异常,记录接口方法预期抛出的异常的正确方法是什么?我应该在接口中还是在实现类中记录它(仅当具体方法实际抛出它时)?

【问题讨论】:

  • 您可以使用@Throws 注释。 IMO 将其放在接口方法上最有意义。
  • 如果它在实现上,那么获取接口的函数将不知道它是否可以抛出或它可以抛出什么。更糟糕的是两个实现会抛出不同的东西。见:LSP

标签: kotlin javadoc


【解决方案1】:

由于客户端程序针对该接口进行编程,我建议在该接口的 Javadoc/KDoc 中制作文档。您是否真的应该记录它们在 this 线程中讨论,例如:

Oracle推荐:

如果记录方法的 API 非常好,包括它可以抛出的异常,为什么不指定运行时异常呢?
运行时异常表示由编程问题引起的问题,因此,不能合理地期望 API 客户端代码从它们中恢复或以任何方式处理它们。此类问题包括算术异常,例如除以零;指针异常,例如试图通过空引用访问对象;和索引异常,例如试图通过太大或太小的索引访问数组元素。
运行时异常可以在程序的任何地方发生,在典型的情况下,它们可能非常多。必须在每个方法声明中添加运行时异常会降低程序的清晰度。

因此,如果信息对客户有用,则应记录在案(即客户是否可以处理,例如IOException)。对于“常规”运行时异常,例如IllegalArgumentException,我会说“不”,不要记录它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-12
    • 2011-07-19
    • 2012-02-11
    • 1970-01-01
    • 2012-01-06
    • 2020-11-07
    • 1970-01-01
    相关资源
    最近更新 更多