我们需要什么PHP异常代码?任何用例场景?

时间:2011-05-03 11:25:44

标签: php exception exception-handling

好吧,这对许多人来说是一个非常蹩脚的问题,但我希望我能得到压倒性的回应:)

当我在PHP中抛出异常时,我可以在消息中添加代码 我捕获异常并根据其类型处理它(如InvalidArgumentExceptionOutOfBoundException)。我记录消息或显示它或做任何合适的事情 我还可以添加一个先前的异常来追踪错误来源的路径。

但我从未使用或从未想过的一件事:代码有用吗?

例如:

throw new Exception("db Error", $code, $previousException);

我如何处理$code

5 个答案:

答案 0 :(得分:37)

该消息用于向用户显示,而代码供程序使用。例如,在“数据库错误”示例中,您可能会构成一组代码,如

  1. 无法连接
  2. 查询时出错
  3. 空结果
  4. 关闭连接时出错
  5. 然后使用适当的代码。然后,当代码的其他部分看到它们异常时,它们会知道发生了什么,并且可能会智能地处理它。

答案 1 :(得分:13)

如何解释$code取决于异常类型。例如,如果您有一个表示MySQL数据库错误的Exception子类,则$code可能是本机MySQL错误代码。在低级别IO错误的情况下,这可能是<errno.h>的值。

基本上,$code应包含以编程方式处理异常所需的任何内容。大多数例外都是在某处处理的。如果您的所有异常都只是显示为错误,那么$code仅在您需要包含来自MySQL客户端库等库的错误代码时才有用。

答案 2 :(得分:3)

我见过实现(CakePHP),其中$code被用作HTTP状态代码。

我用一部分例外实现了这个概念。因此,从HttpException扩展的所有异常都会响应HTTP错误

答案 3 :(得分:3)

在面向对象语言中,异常的类型表示它是什么类型的错误。但是,如果您有两件事可以生成相同的异常类型,则可以使用错误代码提供更多详细信息。

错误代码是非面向对象语言中广泛使用的功能,用于表示它是什么类型的错误。

答案 4 :(得分:0)

我个人使用代码获取压缩的错误消息,该错误消息可以发送给支持人员。例如,假设用户尝试进行身份验证,但他失败了,我的代码将抛出AuthenticateException并显示以下消息:Failed to authenticate,并提供了一个特定代码来指示失败背后的实际问题。用户将仅看到身份验证消息和代码,因此不知道身份验证失败的真正原因是什么。然后建议他,如果需要,请与支持团队联系并提供代码。

基于异常代码,我们的支持同事可以轻松查明身份验证失败的真正原因(密码无效,用户名不存在,帐户被暂停等),并可以相应地为用户提供帮助。< / p>