Bagaimana Mengendalikan Ralat Maut dalam PHP dengan Selamat?

Susan Sarandon
Lepaskan: 2024-10-24 11:49:29
asal
267 orang telah melayarinya

How to Safely Handle Fatal Errors in PHP?

Mengendalikan Ralat Maut dalam PHP dengan Selamat

Keupayaan pengendalian ralat PHP termasuk menangkap ralat maut seperti "Saiz memori yang dibenarkan habis." Ralat ini berlaku apabila skrip menggunakan memori yang berlebihan. Daripada meningkatkan had memori, anda boleh mengembalikan mesej tersuai kepada pengguna.

Satu kaedah yang berkesan ialah menggunakan register_shutdown_function(). Fungsi ini mendaftarkan panggilan balik yang menyemak error_get_last(). Dengan menyemak ralat selepas skrip selesai dijalankan, anda boleh menentukan sama ada ralat maut telah berlaku dan mengendalikannya dengan anggun.

Berikut ialah contoh pelaksanaan:

<code class="php">ini_set('display_errors', false);
error_reporting(-1);

set_error_handler(function($code, $string, $file, $line){
        throw new ErrorException($string, null, $code, $file, $line);
    });

register_shutdown_function(function(){
        $error = error_get_last();
        if(null !== $error)
        {
            echo 'Caught at shutdown';
        }
    });

try
{
    while(true)
    {
        $data .= str_repeat('#', PHP_INT_MAX);
    }
}
catch(\Exception $exception)
{
    echo 'Caught in try/catch';
}</code>
Salin selepas log masuk

Apabila dilaksanakan, skrip ini mencetak " Terperangkap semasa penutupan," menunjukkan bahawa ralat maut telah ditangkap dalam fungsi penutupan.

Anda boleh memeriksa tatasusunan $error dalam fungsi penutupan untuk menentukan punca ralat dan mengambil tindakan yang sewajarnya, seperti mengeluarkan semula minta dengan parameter berbeza atau mengembalikan respons.

Perlu ambil perhatian bahawa semasa mengekalkan error_reporting() pada tahap tinggi (-1) disyorkan, anda masih harus menggunakan set_error_handler() dan ErrorException untuk semua pengendalian ralat lain perlu mengelakkan isu semasa pelaksanaan skrip.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat Maut dalam PHP dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan