Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan pengendalian ralat dalam PHP?

Bagaimana untuk melakukan pengendalian ralat dalam PHP?

王林
王林asal
2023-05-12 08:01:35807semak imbas

PHP ialah bahasa pengaturcaraan yang biasa digunakan, terutamanya sesuai untuk pembangunan web. Pembangun pasti akan menghadapi pelbagai ralat dan pengecualian semasa menulis kod. Mekanisme pengendalian ralat yang baik membantu meningkatkan keteguhan dan kebolehselenggaraan kod serta memastikan kestabilan dan keselamatan kod. Artikel ini akan menerangkan cara melakukan pengendalian ralat dalam PHP.

  1. Tahap ralat

Terdapat berbilang tahap ralat dalam PHP Anda boleh mengawal maklumat ralat mana yang akan direkodkan dan dipaparkan melalui tetapan tahap ralat.

  • E_ERROR: Ralat maut yang akan menyebabkan skrip menamatkan pelaksanaan.
  • E_WARNING: Mesej amaran tidak membawa maut, skrip akan terus dilaksanakan.
  • E_NOTICE: Menyediakan mesej amaran untuk situasi yang mungkin menyebabkan masalah dan skrip akan terus dilaksanakan.
  • E_STRICT: Menyediakan maklumat amaran tentang keserasian dan penyeragaman untuk peningkatan kualiti kod.
  • E_DEPRECATED: Menyediakan maklumat amaran tentang penamatan dan pengalihan keluar kefungsian pada masa hadapan.

Untuk mengawal tahap ralat ini, anda boleh menggunakan fungsi error_reporting(). Sebagai contoh, kod berikut ditetapkan kepada hanya mengeluarkan mesej ralat peringkat E_ERROR dan E_WARNING:

<?php
error_reporting(E_ERROR | E_WARNING);
?>
  1. Fungsi pengendalian ralat

PHP menyediakan satu siri fungsi untuk mengendalikan jenis yang berbeza maklumat ralat. Fungsi ini akan ditetapkan sebagai fungsi pengendalian ralat untuk mengendalikan tahap ralat yang sepadan.

  • set_error_handler(): Tetapkan fungsi pengendalian ralat tersuai.
  • set_exception_handler(): Tetapkan fungsi pengendalian pengecualian tersuai.
  • register_shutdown_function(): Daftar fungsi untuk dipanggil secara automatik apabila pelaksanaan skrip selesai.

Berikut ialah beberapa kod sampel untuk menunjukkan cara melaksanakan fungsi pengendalian ralat tersuai:

<?php
function custom_errorhandler($errno, $errstr, $errfile, $errline) {
    echo "Error: [$errno] $errstr - $errfile:$errline";
}

set_error_handler("custom_errorhandler");

// 以下代码会产生一个错误
$test = 2 / 0;
?>

Kod di atas akan mengeluarkan:

Error: [2] Division by zero - /var/www/example.php:7

Error_handler() ialah disesuaikan di sini Fungsi, yang dipanggil apabila ralat berlaku semasa pelaksanaan skrip.

  1. Pengendalian pengecualian

Pengecualian juga disokong dalam PHP, dan pengendalian pengecualian boleh dicapai melalui kata kunci try, catch dan throw.

Kod dalam blok percubaan mungkin membuang pengecualian. Jika kod dalam blok cuba melemparkan pengecualian, baki kod dalam blok tidak akan dilaksanakan, tetapi akan segera melompat ke blok tangkapan. Blok tangkapan akan cuba menangkap pengecualian yang dilemparkan dan mengendalikannya dengan sewajarnya.

Jika tiada pengecualian ditangkap, pelaksanaan kod selepas blok tangkapan diteruskan.

Berikut ialah contoh kod untuk pengendalian pengecualian mudah:

<?php
function divide($a, $b) {
    if ($b == 0) {
        throw new Exception('Cannot divide by zero');
    } else {
        return $a / $b;
    }
}

try {
    echo divide(2, 0);
} catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage();
}
?>

Output:

Caught exception: Cannot divide by zero

Dalam kod di atas, pengecualian dibuang daripada fungsi divide(). Fungsi divid() dipanggil dalam blok kod cuba Kerana input $b=0, pengecualian dilemparkan. Tangkap pengecualian dalam blok kod tangkapan dan keluarkan maklumat.

  1. Log

Untuk menjejak dan menyelesaikan ralat dengan lebih baik, log aplikasi log adalah bahagian penting. Anda boleh menggunakan fungsi terbina dalam PHP error_log() untuk merekod maklumat ralat ke fail Kod adalah seperti berikut:

<?php
function custom_errorhandler($errno, $errstr, $errfile, $errline) {
    $log_message = "Error: [$errno] $errstr - $errfile:$errline";
    error_log($log_message, 3, "error.log");
}

set_error_handler("custom_errorhandler");

// 以下代码会产生一个错误
$test = 2 / 0;
?>

Kod di atas akan merekodkan maklumat ralat ke fail error.log.

  1. Kesimpulan

Pengendalian ralat adalah bahagian yang sangat penting dalam mana-mana bahasa pengaturcaraan. PHP menyediakan pelbagai cara untuk mengendalikan ralat, termasuk menetapkan tahap ralat, menetapkan fungsi pengendalian ralat tersuai, menggunakan pengendalian pengecualian dan pengelogan, dsb. Mengendalikan ralat dengan betul boleh meningkatkan kestabilan, keteguhan dan kebolehselenggaraan kod, memastikan kebolehpercayaan dan keselamatan aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk melakukan pengendalian ralat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn