如果我没有在PHP中发现异常,我会在带有堆栈跟踪的error.log
文件中收到一条有用的错误消息。例如,如果我运行:通过堆栈跟踪记录捕获到的异常
<?php
function foo() {
throw new Exception('Oh no!');
}
foo();
?>
然后我得到这个写我的日志:
[Wed Mar 06 10:35:32 2013] [error] [client 86.146.145.175] PHP Fatal error: Uncaught exception 'Exception' with message 'Oh no!' in /var/www/test.php:4\nStack trace:\n#0 /var/www/test.php(7): foo()\n#1 {main}\n thrown in /var/www/test.php on line 4
有时候我想捕获异常,但仍日志细节。我想象类似:
<?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()
。
非常有用的答案来理解它。 – kta 2017-04-14 08:14:56