致命错误:在第0行的未知中引发了没有堆栈帧的异常

时间:2013-03-01 作者:vg425

我遇到了一个非常神秘的错误,我不知道从哪里开始。

网站(http://www.petcercise.com/) 工作正常,但当我尝试转到/wp admin/I时,出现以下错误:

致命错误:在第0行的未知堆栈帧中没有引发异常

我已经在谷歌上搜索了它,并搜索了Worpress支持网站。这个错误似乎通常与新插件有关,但我最近没有在这个网站上安装任何新插件。

我有两个问题:

如何诊断根本原因?

如果无法诊断问题,如何从错误中恢复?

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

About the Error

在没有堆栈帧的情况下引发异常

意味着某人的代码在不允许抛出异常的地方抛出异常。例如,不能在对象的析构函数中引发异常。这是一个很好的例子in the php docs.

简而言之,如果您有一个异常处理程序(注册于set_exception_handler 如果在it中抛出一个异常,就会出现错误,您会看到上面这样的错误消息。

或者,假设您有一个错误处理程序(注册于set_error_handler 它可以将警告和其他内容转换为ErrorException\'s、 然后在析构函数的某个位置意外使用了未定义的变量。相同的结果:在不可能引发异常的情况下引发异常。

Tracking It Down

这个问题可能不会发生在WordPress核心中,所以我会在您的插件和主题中开始搜索。查找呼叫set_exception_handlerset_error_handler. 如果您已经进入命令行,可以使用以下工具ack 或grep:

$ ack "set_(error|exception)_handler"
然后,您可以开始查找抛出异常的实例。查找throw 关键字和see引发wehre异常。

$ ack throw
如果所有其他方法都失败了,并且你找不到这个问题的来源,那么开始停用插件和主题,直到它消失为止。显然,你不能在管理员中使用主题区域的插件列表表,因此你需要进入并通过FTP重命名插件文件/文件夹以停用它们。你可以对主题做同样的事情。一次做一个,直到问题消失。然后重新激活插件,看看它是否会回来。

结束