我正在尝试通过以下函数恢复最后(致命)错误消息:
$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
如何获取错误字符串而不是系统添加的所有内容?
答案 0 :(得分:1)
你的期望是错误的。抛出异常本身不会导致错误,因此不是$last_error
中显示的错误。未能捕获异常会导致错误,但该错误的消息为Uncaught Exception
,后跟异常的详细信息,而不仅仅是异常字符串。
由于该消息的特定格式取决于版本,因此您可以做的最好的事情就是在其中搜索异常字符串:
if (preg_match('/Error n\.1/', $last_error['message']) {
echo "Error n.1";
}