使用堆栈跟踪记录捕获的异常
如果我没有在PHP中捕获异常,我会在我的文件中收到一条有用的错误消息,其中包含堆栈跟踪。例如,如果我运行:error.log
<?php
function foo() {
throw new Exception('Oh no!');
}
foo();
?>
然后我把它写到我的日志中:
[2013年3月6日,星期三,10:35:32][错误][客户端 86.146.145.175]PHP 致命错误:未捕获的异常“异常”,在 /var/www/test.php:4\nStack trace:\n#0 /var/www/test.php(7): foo()\n#1 {main}\n 在 /var/www/test 中抛出.php在第 4 行
有时我想捕获异常,但仍然记录该详细信息。我正在想象这样的事情:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
where 将以与未捕获的异常自动写入的格式基本相同的格式写入错误日志 - 除了具有而不是 .log_exception
Caught exception
PHP Fatal error: Uncaught exception
是否有内置函数来记录此类异常信息,或将其捕获到字符串中?我正在想象一些与Python相似的东西。traceback.format_exc()