Rumah >rangka kerja php >Laravel >Cara mengendalikan pengecualian menggunakan perisian tengah dalam Laravel
Cara menggunakan middleware untuk mengendalikan pengecualian dalam Laravel
Middleware ialah konsep penting dalam rangka kerja Laravel, yang boleh melakukan satu siri operasi sebelum dan selepas permintaan sampai kepada pengawal. Selain pengesahan kebenaran biasa, pengelogan dan fungsi lain, perisian tengah juga boleh digunakan untuk mengendalikan pengecualian. Dalam artikel ini, kami akan meneroka cara menggunakan perisian tengah untuk mengendalikan pengecualian dalam Laravel dan memberikan contoh kod khusus.
Pertama, kita perlu mencipta perisian tengah yang mengendalikan pengecualian. Kelas middleware boleh dijana dengan menjalankan arahan berikut:
php artisan make:middleware ExceptionHandlerMiddleware
Seterusnya, buka fail kelas middleware yang dijana, dan kita dapat melihat bahawa struktur kelas adalah seperti berikut:
namespace AppHttpMiddleware; use Closure; class ExceptionHandlerMiddleware { public function handle($request, Closure $next) { return $next($request); } }
Dalam kaedah pemegang, kita boleh mengendalikan pengecualian yang diminta. Demi demonstrasi, kami akan menangkap sebarang jenis pengecualian dan mengembalikan mesej ralat secara seragam. Kami boleh mengubah suai kod seperti berikut:
namespace AppHttpMiddleware; use Closure; use Exception; use IlluminateHttpResponse; class ExceptionHandlerMiddleware { public function handle($request, Closure $next) { try { return $next($request); } catch (Exception $exception) { $message = $exception->getMessage(); $code = $exception->getCode(); $status = $exception->getCode() >= 400 && $exception->getCode() < 600 ? $exception->getCode() : 500; return response()->json(['message' => $message, 'code' => $code], $status); } } }
Dalam kod di atas, kami mula-mula cuba melaksanakan permintaan dan mendapatkan hasilnya. Jika pengecualian berlaku, kami akan mendapat maklumat pengecualian, kod dan kod status dan mengembalikan respons JSON yang mengandungi maklumat ini. Jika kod pengecualian berada dalam julat 4xx atau 5xx, kami akan menggunakan kod pengecualian sebagai kod status respons, jika tidak, kami akan mengembalikan kod status 500.
Seterusnya, kita perlu mendaftarkan middleware ini kepada middleware global atau middleware penghalaan yang ditentukan. Cari atribut $middleware
dalam fail app/Http/Kernel.php
dan perkenalkan kelas middleware Kod contoh adalah seperti berikut: app/Http/Kernel.php
文件中找到$middleware
属性,并将中间件类引入,示例代码如下:
protected $middleware = [ ... AppHttpMiddlewareExceptionHandlerMiddleware::class, ... ];
现在,我们已经将异常处理中间件注册到了全局中间件中。当请求到达控制器时,如果发生了异常,将会被中间件捕获并返回一个带有错误信息的JSON响应。
除了全局中间件,我们还可以将中间件应用到指定的路由中。在app/Http/Kernel.php
文件中找到$routeMiddleware
protected $routeMiddleware = [ ... 'exception.handler' => AppHttpMiddlewareExceptionHandlerMiddleware::class, ... ];Sekarang, kami telah mengendalikan pengecualian middleware didaftarkan dalam middleware global. Apabila permintaan mencapai pengawal, jika pengecualian berlaku, ia akan ditangkap oleh middleware dan mengembalikan respons JSON dengan maklumat ralat. Selain perisian tengah global, kami juga boleh menggunakan perisian tengah pada laluan tertentu. Cari atribut
$routeMiddleware
dalam fail app/Http/Kernel.php
dan tambahkan kod berikut: Route::get('/', function () { // Your code here })->middleware('exception.handler');Kemudian, tambah perisian tengah dalam definisi laluan, contohnya ialah seperti berikut:
rrreee
Dengan cara ini, apabila mengakses laluan yang sepadan, pengecualian yang berlaku akan ditangkap dan diproses oleh perisian tengah. 🎜🎜Di atas ialah contoh terperinci menggunakan perisian tengah untuk mengendalikan pengecualian dalam Laravel. Dengan menggunakan middleware pengendalian pengecualian, kami boleh mengendalikan pengecualian yang berlaku dalam aplikasi dengan cara yang terperinci, meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Harap artikel ini membantu anda! 🎜Atas ialah kandungan terperinci Cara mengendalikan pengecualian menggunakan perisian tengah dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!