我已经开源一个math library for PHP,定义其own hierarchy of exceptions:我应该在库中抛出PHP 7的错误类吗?
现在PHP 7已经落地,我意识到一些例外觉得有点多余的推出了全新的Error
类:
让我们忘了PHP 5一会儿,假设该库仅以PHP 7为目标。
- 我应该丢掉
ArithmeticError
并放下我的ArithmeticException
? - 同样,我应该扔
DivisionByZeroError
并下降DivisionByZeroException
? - 应该
RoundingNecessaryException
和NumberFormatException
延伸ArithmeticError
? - 在这种情况下,他们应该被称为
RoundingNecessaryError
和NumberFormatError
?
乍一看,重新声明在语言中具有本机等价物的异常似乎很奇怪。
与此同时,虽然没有什么可以阻止用户级代码抛出Error
,我觉得设计这些类通过PHP本身被抛出,而用户空间的库最好还是扔Exception
而不是Error
。
在这个问题上有共识吗?
致投票结束的人:基于“对这个问题的答案投票结束问题将倾向于几乎完全基于意见,而不是事实,参考或具体专业知识”。是适得其反的,有点“射击使者”。即使我们决定以意见为基础的答案(什么样的答案*不是*)是坏事,那么谴责答案*,而不是问题。试着去合作,呃?根据其整体价值判断一个情况,而不是规则书中的诫命。如果你没有任何有用的补充,只需慢跑即可。 –
TBH,我知道这个问题将成为“主要是基于观点的”强迫选民的目标。我尽力争取达成共识,而不是意见。也许创建[Throwable RFC](https://wiki.php.net/rfc/throwable-interface)的人写了关于这个主题的东西。也许这是一个半官方的答案。谁知道。无论如何我需要问! – Benjamin
PHP错误异常是在发生*程序员*错误的情况下引发的。抛出的任何错误都应该无可否认地链接到代码中的实际错误。如果您使用Error或其子类匹配此约束,则可以在您的代码中使用它们。 (这也意味着你不应该捕获这些异常,除了在你的顶级处理程序或非常不寻常的情况下。如果你的异常应该被捕获,那么Error是不适合你的。) – NikiC