Log przechwyconego wyjątku za pomocą śledzenia stosu
Jeśli nie przechwytuję wyjątku w PHP, otrzymuję pomocny komunikat o błędzie w moimerror.log
plik ze śladem stosu. Na przykład, jeśli uruchomię:
<?php
function foo() {
throw new Exception('Oh no!');
}
foo();
?>
potem dostaję to do moich dzienników:
[Śro Mar 06 10:35:32 2013] [błąd] [klient 86.146.145.175] PHP Fatal error: Nieprzechwycony wyjątek „Wyjątek” z komunikatem „O nie!” w /var/www/test.php:4 ślad śledzenia: n # 0 /var/www/test.php(7): foo () n # 1 {main} wrzucony do / var / www / test.php w linii 4.
Czasami chciałbym przechwycić wyjątek, ale nadal rejestrować ten szczegół. Wyobrażam sobie coś takiego:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
gdzielog_exception
zapisze w dzienniku błędów coś w zasadzie w tym samym formacie, co automatycznie zapisywane dla nieprzechwyconego wyjątku - być może dosłownie identyczne, oprócz posiadaniaCaught exception
zamiastPHP Fatal error: Uncaught exception
.
Czy istnieje wbudowana funkcja do rejestrowania takich informacji o wyjątku lub przechwytywania go do łańcucha? Wyobrażam sobie coś złegotraceback.format_exc()
w Pythonie.