【问题标题】:Do all PHP Exceptions have 'trace', 'message' and 'code' properties?是否所有 PHP 异常都具有“跟踪”、“消息”和“代码”属性?
【发布时间】:2016-08-16 00:21:32
【问题描述】:

我必须编写一个日志类来记录来自异常的数据。为了使事情更简单,我想知道是否可以在“跟踪”数组中检索数据并通过在 PHP 中添加异常实例的“消息”和“代码”属性来扩展它。但我不确定是否保证 PHP 中所有抛出的异常至少具有这三个属性('trace'、'message'和'code')。还建议是否有更好的记录方式。

【问题讨论】:

  • 由于每个用户异常都在扩展基类\Exception,因此它至少具有相同的功能。所以一般来说你应该基于 \Exception 类。 php.net/manual/en/class.exception.php

标签: php exception logging


【解决方案1】:

首先,最好使用已经证明是好的代码。 PHP 社区广泛使用Monolog 库检查它。如果您仍然想编写自己的记录器,您应该坚持PSR-3 rules

回答您的问题。抛出的 PHP 对象必须是 Exception 类的实例或 Exception 的子类。

但是如果你看一下异常的构造函数

  public function __construct($message = null, $code = 0, Exception $previous = null);

你可以抛出空异常。但总会有代码、文件、跟踪和代码。代码和消息可以为空。

您可以在http://php.net/manual/en/language.exceptions.php上阅读更多相关信息

【讨论】:

  • 我同意坚持使用已经编写好的类会更好。但它们不符合我的要求。它们要么太大,要么错过了我正在寻找的重要功能。
  • 我认为独白能满足 99% 的需求。我在所有项目中都使用它,它可以高度定制,还有很多渠道、处理程序等。
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多