PHP获取上一个错误

时间:2017-12-22 21:57:45

标签: php fatal-error

我正在尝试通过以下函数恢复最后(致命)错误消息:

$last_error = error_get_last();
echo $last_error['message'];

使用例外:

throw new Exception("Error n.1");

我希望得到这个字符串“Error n.1”,但我得到这样的东西(取决于PHP版本):

Uncaught Exception: Error n.1 in C:\wamp\www\JUICE\projects\JATE\dist\jate\functions\errorHandler.php:66 Stack trace: #0 C:\wamp\www\JUICE\projects\JATE\dist\jate\functions\requirer.php(37): require_once() #1 C:\wamp\www\JUICE\projects\JATE\dist\jate\functions\requirer.php(5): jRequire('C:\\wamp\\www\\JUI...', false, 0) #2 C:\wamp\www\JUICE\projects\JATE\dist\jate\functions\requirer.php(15): requireComponent('C:\\wamp\\www\\JUI...', false) #3 C:\wamp\www\JUICE\projects\JATE\dist\jate\coreEngine.php(10): requireComponents('functions') #4 C:\wamp\www\JUICE\projects\JATE\examples\01essential\jate.php(15): require_once('C:\\wamp\\www\\JUI...') #5 C:\wamp\www\JUICE\projects\JATE\examples\01essential\index.php(2): require_once('C:\\wamp\\www\\JUI...') #6 {main} thrown

如何获取错误字符串而不是系统添加的所有内容?

1 个答案:

答案 0 :(得分:1)

你的期望是错误的。抛出异常本身不会导致错误,因此不是$last_error中显示的错误。未能捕获异常会导致错误,但该错误的消息为Uncaught Exception,后跟异常的详细信息,而不仅仅是异常字符串。

由于该消息的特定格式取决于版本,因此您可以做的最好的事情就是在其中搜索异常字符串:

if (preg_match('/Error n\.1/', $last_error['message']) {
    echo "Error n.1";
}