传播异常的异常注释
Exception annotations for propagated exceptions
假设我有一个函数 a
抛出异常 $e
。因此,根据 phpdoc
我应该在 a
.
的定义上有一个注释 @throws
当我有另一个函数 b
调用 a
function b() {
a();
}
practice/bad practice/correct/wrong 在 b
的定义上添加一个 @throw
注释表明 b
可以抛出那种异常好吗?
@throws
annotation 是为开发者指明 function() 是否可以抛出异常
首先,你要问这个问题:为什么不在b()
方法中捕获异常,有正当理由吗?
是吗? 所以你必须添加 @throws
注释,它会指示你或其他开发人员使用 function() b()
是不安全的,他们将决定是否将要
捕获或传播异常
也,因为PHP不会强制你捕获另一个函数抛出的异常,所以@throws
注解变成了一个must/mandatory练习
事实上,b()
抛出异常。这种情况是直接发生还是间接发生与调用者无关。现在,注释不应该记录内部实现细节,这些细节可能会改变甚至随着不同的派生 类 而变化。相反,注释记录了调用者的可见行为,因此有效异常也应该是注释的一部分。
假设我有一个函数 a
抛出异常 $e
。因此,根据 phpdoc
我应该在 a
.
@throws
当我有另一个函数 b
调用 a
function b() {
a();
}
practice/bad practice/correct/wrong 在 b
的定义上添加一个 @throw
注释表明 b
可以抛出那种异常好吗?
@throws
annotation 是为开发者指明 function() 是否可以抛出异常
首先,你要问这个问题:为什么不在b()
方法中捕获异常,有正当理由吗?
是吗? 所以你必须添加 @throws
注释,它会指示你或其他开发人员使用 function() b()
是不安全的,他们将决定是否将要
捕获或传播异常
也,因为PHP不会强制你捕获另一个函数抛出的异常,所以@throws
注解变成了一个must/mandatory练习
事实上,b()
抛出异常。这种情况是直接发生还是间接发生与调用者无关。现在,注释不应该记录内部实现细节,这些细节可能会改变甚至随着不同的派生 类 而变化。相反,注释记录了调用者的可见行为,因此有效异常也应该是注释的一部分。