我如何记录" trigger_error()"对于一个类方法?

时间:2015-02-10 11:36:45

标签: php error-handling documentation

如果我有以下类方法:

class ClassA
{
    public function MethodA()
    {
        trigger_error('An error has occurred.', E_USER_ERROR);
    }
}

...那么可以接受的方式是什么,它可能会明确地使用trigger_error()“抛出”(发出)错误?我发现最接近的是使用@throws@exception。是否有可能根本不记录此行为,或者将其包含在方法描述本身中?

我问这个关于trigger_error的问题的原因是因为我使用了一个由自定义错误处理程序调用的自定义错误记录类,因此发出运行时错误和输出很方便/以有组织的方式保存它们。我应该只使用@see trigger_error@see ErrorLog(我的自定义类)吗?


修改

对于那些在触发错误时对脚本流感到疑惑的人:脚本将终止E_USER_ERROR上的执行。

1 个答案:

答案 0 :(得分:0)

  

脚本不会在E_USER_ERROR上终止执行。

这可能是你的更大问题。 PHP的错误机制相当......原始。它基本上只知道两种模式:通过触发通知,警告或严厉警告(a.k.a.错误)通知开发人员潜在问题,或通过触发致命错误来停止脚本。触发(致命)错误但仍继续执行脚本并不是它的目的。

该函数应该非正式地记录,如果是X,Y或Z,则触发错误。这个通常意味着“如果X,Y或Z将会杀死脚本”。如果你压倒了这种行为,那就取决于你。

如果可以以标准化的方式处理这些错误,那么正式记录的错误是有意义的,这就是异常情况。他们有正式的文档标准(@throws),可以灵活处理(try..catch)。你真的应该 使用异常来达到你在这里尝试使用错误的目的。