什么时候应该例外记录?

时间:2017-10-10 11:25:57

标签: php phpdoc

假设以下代码段:

public function foo() 
{
    return $this->dependency->bar();
}

如果已知dependency::bar()会抛出异常,但预计foo()不会处理它。 foo()在其docblock中有@throws个条目吗?或者这是隐含的吗? phpdoc文档对此有些模糊。

假设基于接口注入dependency;接口文档应该方法可以抛出指定的异常。

如果异常应该由调用代码处理还是与情况无关,这是否重要?

一直是语义:)

1 个答案:

答案 0 :(得分:2)

您已经创建了公共函数(每个人都可以使用它),在某些情况下可以抛出异常 - 因此您必须在docblock中输入@throws条目。
如果异常从你的依赖中抛出 - 它是你的内部实现并且它被封装 - 因此,将使用你的函数的人将不知道你的函数有什么期望。

在接口注入的情况下 - 接口必须描述所有异常,因为异常它是类和接口行为的一部分必须描述所有可能的行为。

如果你有try-catch阻止并处理来自依赖项的所有异常 - 你必须在docblock的@throws条目中只有你自己的例外。