php注释中的throws,php – 在界面文档中使用@throws

考虑使用接口的代码:

public function doSomething(MyInterface $my) { ... }

如果甚至其中一个实现可能会引发异常,那么您需要确保处理异常的可能性.

所以,是的,应该记录在案.

即使只有一个实现抛出异常,异常处理仍然需要到位.当然这并不意味着每个方法都应该有一个@throws被打了.它应该仍然只能在适当的地方使用(希望实现合法需要抛出异常的地方).

作为一个更具体的例子,请考虑以下几点:

interface LogWriter

{

/**

* @throws LogWriterException

*/

public function write($entry);

}

class DbLogWriter

{

public function __construct(PDO $db)

{

//store $db somewhere

}

public function write($entry)

{

try {

//store $entry in the database

} catch (PDOException $e) {

throw new LogWriterException(...);

}

}

}

class NullLogWriter

{

public function write($entry) { }

}

在写入数据库时​​,可能会尝试降低异常的可能性,但一天结束时,这不是一个异常安全的操作.因此,DbLogWriter :: write应该预期会抛出异常.

现在考虑空作者,只是丢弃条目.绝对没有什么可以在那里出错,因此,不需要例外.

然而,如果你有一些$log,而你所知道的就是它是LogWriter的一个实现.你认为它不会抛出异常,并可能意外地让一个冒泡,或者你认为它会抛出一个LogWriterException?我会保持安全的一面,并假设它可以抛出一个LogWriterException.

如果所有用户都知道$log是一个LogWriter,但只有DbLogWriter被记录为抛出异常,用户可能不会意识到$log-> write(…)可能会引发异常.此外,当FileLogWriter稍后创建时,这意味着将会设置实现可能会抛出的异常的预期(没有人会期望FileLogWriter抛出一个RandomNewException).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值