Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menyekat gesaan ralat dalam Laravel (dua kaedah)

Bagaimana untuk menyekat gesaan ralat dalam Laravel (dua kaedah)

PHPz
PHPzasal
2023-04-13 13:39:45977semak imbas

Laravel ialah rangka kerja PHP yang sangat popular Mekanisme gesaan ralat yang disediakannya membolehkan anda mencari punca dengan cepat apabila masalah berlaku semasa proses pembangunan, dengan itu meningkatkan kecekapan pembangunan. Walau bagaimanapun, kadangkala kami tidak mahu pengguna melihat sebarang gesaan ralat apabila kami pergi ke dalam talian secara rasmi Pada masa ini, kami boleh menyelesaikan masalah ini dengan menyekat gesaan ralat. Artikel ini akan memperkenalkan cara menyekat gesaan ralat dalam Laravel.

Cara pertama: matikan mod nyahpepijat

Dalam rangka kerja Laravel, kami boleh menyekat gesaan ralat dengan mematikan mod nyahpepijat. Buka fail .env dalam projek dan tukar nilai APP_DEBUG daripada true kepada false untuk mematikan mod nyahpepijat.

Mematikan mod nyahpepijat akan menyekat semua gesaan ralat pada halaman, termasuk 500 halaman dan mesej ralat Laravel. Kaedah ini sesuai untuk situasi di mana semua gesaan ralat dan log perlu dikosongkan, seperti persekitaran dalam talian rasmi.

Perlu diambil perhatian bahawa tidak disyorkan untuk menghidupkan mod nyahpepijat dalam persekitaran pengeluaran. Selepas menghidupkan mod nyahpepijat, pelbagai mesej ralat Laravel akan dipaparkan pada halaman Maklumat ini boleh membantu kami mencari masalah dengan cepat. Walau bagaimanapun, dalam persekitaran yang dilancarkan secara rasmi, sebarang mesej ralat akan membawa pengalaman pengguna yang sangat buruk kepada pengguna dan juga akan memberi kesan serius pada imej jenama tapak web.

Cara kedua: pengendali pengecualian tersuai

Cara kedua untuk menyekat gesaan ralat adalah dengan menyesuaikan pengendali pengecualian. Kami boleh menutup gesaan ralat pada halaman dengan menulis semula pengendali pengecualian Laravel sendiri. Berikut ialah contoh mudah:

<?php

namespace App\Exceptions;

use Exception;

class Handler extends ExceptionHandler
{
    public function render($request, Exception $exception)
    {
        if ($this->isHttpException($exception)) {
            return $this->renderHttpException($exception);
        } else {
            return response()->view('errors.500');
        }
    }
}

Dalam kod di atas, kami mentakrifkan kelas Handler, yang mewarisi pengendali pengecualian Laravel sendiri ExceptionHandler. Dalam kelas ini, kami mengatasi kaedah render Apabila kami menangkap pengecualian, kami akan terlebih dahulu menentukan sama ada jenis pengecualian ialah HttpException Jika ya, kami akan memanggil kaedah renderHttpException untuk mengeluarkan maklumat pengecualian ke halaman . Jika tidak, halaman ralat 500 akan dikembalikan (tiada mesej ralat akan dipaparkan pada masa ini).

Perlu diambil perhatian bahawa dalam pembangunan sebenar, kami juga mungkin perlu mengendalikan beberapa jenis pengecualian tersuai. Pada masa ini, kita boleh menambah logik pertimbangan yang sepadan dengan kaedah render dan membuat pemprosesan yang berbeza mengikut jenis pengecualian yang berbeza.

Kesimpulan

Artikel ini menerangkan dua cara untuk menutup gesaan ralat: mematikan mod nyahpepijat dan menyesuaikan pengendali pengecualian. Perlu memilih kaedah yang sesuai mengikut situasi sebenar. Mematikan mod nyahpepijat boleh menyekat semua gesaan dan log ralat dengan berkesan dalam persekitaran pengeluaran, dan sesuai untuk digunakan sebelum pelancaran rasmi. Dengan menyesuaikan pengendali pengecualian, kami boleh mengawal pelbagai jenis pengecualian secara fleksibel dan mengendalikannya dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimana untuk menyekat gesaan ralat dalam Laravel (dua kaedah). 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