如果我沒有在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