Laravel ialah rangka kerja PHP popular yang menyediakan banyak mekanisme pengendalian ralat untuk membantu pembangun nyahpepijat dan mengendalikan ralat dalam atur cara dengan lebih mudah. Dalam artikel ini, kami akan meneroka mekanisme pengendalian ralat Laravel.
Terdapat pilihan dalam fail konfigurasi Laravel config/app.php dengan nyahpepijat nilai kunci. Apabila nyahpepijat adalah benar, Laravel akan memaparkan maklumat ralat terperinci untuk memudahkan pembangun menyahpepijat atur cara. Apabila ditetapkan kepada palsu, hanya mesej ralat umum dipaparkan.
Pengendalian pengecualian digunakan dalam Laravel untuk menangkap ralat dalam kod. Apabila ralat berlaku dalam program, Laravel akan membuang pengecualian, yang akan dikendalikan oleh sistem.
Kami boleh menulis kod dalam fail app/Exceptions/Handler.php untuk mengendalikan pengecualian. Dalam fail ini, terdapat kaedah yang dipanggil render, yang akan dipanggil secara automatik untuk memberikan pengecualian. Kita boleh menentukan cara mengendalikan pengecualian dalam kaedah ini. Berikut ialah contoh:
public function render($request, Exception $exception) { if ($exception instanceof IlluminateDatabaseEloquentModelNotFoundException) { return response()->json([ 'error' => 'Resource not found' ], 404); } return parent::render($request, $exception); }
Dalam contoh ini, kami menentukan jenis pengecualian Jika ModelNotFoundException, kami mengembalikan ralat 404 dan respons dalam format json untuk memberitahu klien bahawa sumber itu tidak ditemui. Jika ia bukan jenis pengecualian ini, panggil kaedah render kelas induk untuk mengendalikannya.
Selain memaparkan mesej ralat pada konsol atau penyemak imbas, Laravel juga menyokong mesej ralat pengelogan untuk mengelog fail. Ini memudahkan untuk menjejak dan menyahpepijat ralat dalam program anda.
Laravel menggunakan perpustakaan Monolog secara lalai untuk pengelogan. Kita boleh menetapkan tahap pengelogan dan lokasi fail log dengan mengubah suai pilihan log dalam fail konfigurasi.
'log' => env('APP_LOG', 'single'), 'log_level' => env('APP_LOG_LEVEL', 'debug'), 'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single'], ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ], ]
Dalam fail konfigurasi ini, kita dapat melihat bahawa Laravel akan log ke fail /storage/logs/laravel.log dan merekodkan semua log pada tahap nyahpepijat dan ke atas.
Apabila ralat berlaku dalam atur cara, Laravel akan memaparkan antara muka ralat ringkas secara lalai. Tetapi kami juga boleh menyesuaikan halaman ralat untuk mencapai kesan yang lebih cantik dan diingini.
Kami boleh mencipta fail paparan kami sendiri dan meletakkannya dalam direktori sumber/pandangan/ralat. Kemudian tulis semula kaedah pemaparan dalam fail app/Exceptions/Handler.php untuk memaparkan halaman paparan tersuai kami apabila pengecualian berlaku. Kod sampel adalah seperti berikut:
public function render($request, Exception $exception) { if ($this->isHttpException($exception)) { if ($exception->getStatusCode() == 404) { return response()->view('errors.404', [], 404); } } return parent::render($request, $exception); }
Dalam contoh ini, kami mentakrifkan halaman ralat 404 dan menentukan sama ada kod status ialah 404 dalam kaedah pemaparan. Jika ya, kembali ke halaman paparan yang baru kami buat.
Ringkasan
Laravel menyediakan banyak mekanisme pengendalian ralat untuk memudahkan pembangun mengendalikan ralat. Kami boleh mengawal semua ralat dalam program melalui fail konfigurasi, pengendalian pengecualian, pengelogan dan halaman ralat tersuai.
Sudah tentu, pengaturcara yang baik harus meminimumkan berlakunya ralat dalam atur cara dan mengelak daripada menangani dan menyelesaikan ralat pada peringkat kemudian, kerana mengurangkan berlakunya ralat sebanyak mungkin bukan sahaja dapat meningkatkan prestasi program, tetapi juga sangat mengurangkan bilangan ralat Kos tenaga penyelenggaraan kemudian.
Atas ialah kandungan terperinci pengendalian ralat laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!