Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mekanisme pengendalian ralat dalam PHP7: Bagaimana untuk mengurus dan menangkap ralat dengan lebih baik?

Mekanisme pengendalian ralat dalam PHP7: Bagaimana untuk mengurus dan menangkap ralat dengan lebih baik?

王林
王林asal
2023-10-19 10:33:181359semak imbas

Mekanisme pengendalian ralat dalam PHP7: Bagaimana untuk mengurus dan menangkap ralat dengan lebih baik?

Mekanisme pengendalian ralat dalam PHP7: Bagaimana untuk mengurus dan menangkap ralat dengan lebih baik?

Pengenalan:
Pengendalian ralat ialah bahagian yang sangat penting dalam pengaturcaraan, ia boleh membantu kami nyahpepijat dan mengurus kod dengan lebih baik. PHP7 telah menambah baik mekanisme pengendalian ralat dan menyediakan fungsi dan fleksibiliti yang lebih berkuasa. Artikel ini akan memperkenalkan cara mengurus dan menangkap ralat dalam PHP7 dengan lebih baik, dan memberikan contoh kod khusus.

1 Tahap dan tetapan pelaporan ralat
Dalam PHP7, kami boleh menetapkan tahap pelaporan ralat dengan mengubah suai fail php.ini. Anda boleh memutuskan ralat mana yang perlu dilaporkan dan ke mana untuk menghantar laporan ralat dengan menetapkan parameter error_reporting.

Kod sampel:

// 设置错误报告级别,显示所有错误
error_reporting(E_ALL);

// 将错误报告发送到日志文件
ini_set('log_errors', 1);
ini_set('error_log', '/path/to/error.log');

Dengan menetapkan tahap pelaporan ralat kepada E_ALL, kami boleh menangkap semua jenis ralat, yang membantu menyemak masalah yang mungkin berlaku dalam kod.

2. Fungsi pengendalian ralat tersuai
PHP7 memperkenalkan fungsi pengendalian ralat baharu: set_error_handler. Kita boleh menggunakan fungsi ini untuk menyesuaikan tingkah laku pengendalian ralat dan bukannya menggunakan mekanisme pengendalian ralat lalai.

Kod contoh:

// 定义自定义错误处理函数
function customErrorHandler($errno, $errstr, $errfile, $errline)
{
    // 错误处理逻辑
    echo "Error [$errno]: $errstr in $errfile on line $errline";
}

// 设置自定义错误处理函数
set_error_handler("customErrorHandler");

Dalam kod di atas, kami mentakrifkan fungsi pengendalian ralat tersuai bernama "customErrorHandler". Kemudian tetapkannya sebagai fungsi pengendalian ralat lalai dengan memanggil fungsi set_error_handler.

3. Mekanisme pengendalian pengecualian
Selain fungsi pengendalian ralat, PHP7 juga memperkenalkan mekanisme pengendalian pengecualian. Pengecualian ialah objek yang dilemparkan apabila ralat berlaku semasa pelaksanaan kod. Kita boleh menggunakan blok cuba-tangkap untuk menangkap dan mengendalikan pengecualian.

Kod sampel:

// 定义自定义异常处理类
class CustomException extends Exception
{
    public function errorMessage()
    {
        // 异常处理逻辑
        return 'Error ['.$this->getCode().']: '.$this->getMessage().' in '.$this->getFile().' on line '.$this->getLine();
    }
}

try {
    // 抛出异常
    throw new CustomException('This is a custom exception.');
} catch (CustomException $e) {
    // 捕获异常
    echo $e->errorMessage();
}

Dalam kod di atas, kami mentakrifkan kelas pengendalian pengecualian tersuai bernama "CustomException", yang merupakan subkelas kelas Exception. Kemudian, objek pengecualian tersuai dilemparkan dalam blok cuba, dan pengecualian ditangkap dan dikendalikan dalam blok tangkapan.

4 Perbezaan antara pengendalian ralat dan pengendalian pengecualian
Kedua-dua pengendalian ralat dan pengendalian pengecualian digunakan untuk mengendalikan ralat yang berlaku semasa pelaksanaan kod. Perbezaan utama antara mereka ialah pengendalian ralat secara aktif mengendalikan ralat dalam kod, manakala pengendalian pengecualian membuang pengecualian dalam kod dan kemudian menangkapnya melalui blok cuba-tangkap.

Pengendalian ralat lebih sesuai untuk beberapa ralat yang boleh dijangka, seperti kegagalan membaca fail, pembolehubah tidak ditentukan, dll. manakala pengendalian pengecualian sesuai untuk beberapa ralat atau pengecualian yang tidak dijangka dalam logik perniagaan.

Pilihan pengendalian ralat dan pengendalian pengecualian hendaklah ditentukan berdasarkan keperluan dan situasi tertentu.

Kesimpulan:
PHP7 menyediakan mekanisme pengendalian ralat yang lebih berkuasa dan fleksibel, termasuk tetapan tahap pelaporan ralat, fungsi pengendalian ralat tersuai, mekanisme pengendalian pengecualian, dsb. Penggunaan yang betul bagi fungsi ini boleh mengurus dan menangkap ralat dengan lebih baik, serta meningkatkan keteguhan dan kebolehselenggaraan kod.

Rujukan:

  • dokumentasi PHP: https://www.php.net/manual/en/function.error-reporting.php#🎜🎜 #
  • Dokumentasi PHP: https://www.php.net/manual/en/function.set-error-handler.php
  • Dokumentasi PHP: https://www.php /manual/en/language.exceptions.php
  • dokumentasi PHP: https://www.php.net/manual/en/language.exceptions.extending.php
  • #🎜🎜 #

Atas ialah kandungan terperinci Mekanisme pengendalian ralat dalam PHP7: Bagaimana untuk mengurus dan menangkap ralat dengan lebih baik?. 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