Pengelogan Ralat: Pendekatan Lancar
Pengendalian Ralat
Pengendalian ralat melibatkan peningkatan ralat menggunakan trigger_error dan mengendalikannya dengan pengendali ralat tersuai yang ditetapkan oleh set_error_handler. Pendekatan ini membolehkan pengelogan ralat dilakukan secara berpusat, bebas daripada kod yang menimbulkan ralat.
Pengendalian Pengecualian
Pengecualian boleh dinaikkan menggunakan SPL dan dikendalikan dengan tersuai pengendali pengecualian ditetapkan oleh set_exception_handler. Pengecualian boleh ditangkap, diperbaiki atau dibaling semula dengan maklumat tambahan.
Amalan Terbaik
Persediaan Kod
Pengendali Ralat:
<code class="php">function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) { // Handle and log errors here } $previousErrorHandler = set_error_handler('errorHandler');</code>
Pengendali Pengecualian:
<code class="php">function exceptionHandler($e) { // Handle and log exceptions here } $previousExceptionHandler = set_exception_handler('ExceptionHandler');</code>
Fungsi Tutup:
<code class="php">function shutdownFunction() { $err = error_get_last(); // Handle fatal errors } register_shutdown_function('shutdownFunction');</code>
Penggunaan
Ralat:
<code class="php">// Notices trigger_error('Disk space is below 20%.', E_USER_NOTICE); // Warnings fopen('BAD_ARGS'); // Generate a warning // Fatal Errors trigger_error('Error in the code, cannot continue.', E_USER_ERROR); // Handled by the shutdown function</code>
Pengecualian:
<code class="php">// Catch and fix try { // Code that may throw an exception } catch (Exception $e) { // Fix the issue and continue } // Rethrow with additional context try { // Code that may throw an exception } catch (Exception $e) { throw new Exception('Additional context', 0, $e); }</code>
Dengan mematuhi prinsip ini, anda boleh melaksanakan sistem pengelogan yang lancar dan bebas ralat yang memudahkan pengendalian ralat dan pengelogan dalam aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Sistem Pengelogan Ralat yang Lancar dan Cekap dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!