【发布时间】:2013-02-21 02:47:26
【问题描述】:
如果我没有在 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 在第 4 行的 /var/www/test.php 中抛出
有时我想捕获异常但仍记录该详细信息。我在想象这样的事情:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
log_exception 将写入错误日志的格式与为未捕获的异常自动写入的格式基本相同——除了使用Caught exception 而不是PHP Fatal error: Uncaught exception 之外,可能实际上完全相同。
是否有内置函数可以记录这样的异常信息,或者将其捕获到字符串中?我在想象一些类似于 Python 中的 traceback.format_exc() 的东西。
【问题讨论】: