如果我没有在 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\n堆栈跟踪:\n#0 /var/www/test.php(7): foo()\n#1 {main}\n 抛出 /var/www/第 4 行的 test.php
有时我想捕捉异常但仍记录该详细信息。我在想像:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
wherelog_exception
将以与为未捕获的异常自动写入的格式基本相同的格式向错误日志写入内容 - 除了具有Caught exception
而不是PHP Fatal error: Uncaught exception
.
是否有内置函数可以记录这样的异常信息,或者将其捕获到字符串中?我在想象一些类似于traceback.format_exc()
Python 的东西。