11 أساسيات Laravel 11: معالجة الأخطاء

عند بدء مشروع Laravel جديد، تكون معالجة الأخطاء والاستثناءات مُكوَّنة مسبقاً لك. فئة App\Exceptions\Handler هي المكان الذي يتم فيه تسجيل جميع الاستثناءات التي يرميها تطبيقك ثم تُصيَّر مرة أخرى إلى المستخدم.
التكوين
يحدد خيار debug في ملف تكوين config/app.php مقدار المعلومات حول الخطأ التي يتم عرضها للمستخدم. بشكل افتراضي، يتم تعيين هذا الخيار ليحترم قيمة متغير البيئة APP_DEBUG:
APP_DEBUG=true # للتطوير
APP_DEBUG=false # للإنتاجالإبلاغ عن الاستثناءات
يُستخدم الإبلاغ عن الاستثناءات لتسجيل الاستثناءات أو إرسالها إلى خدمة خارجية مثل Sentry أو Flare. بشكل افتراضي، يتم تسجيل الاستثناءات بناءً على تكوين التسجيل الخاص بك.
// bootstrap/app.php
use App\Exceptions\InvalidOrderException;
->withExceptions(function (Exceptions $exceptions) {
$exceptions->report(function (InvalidOrderException $e) {
// منطق الإبلاغ المخصص
});
})إيقاف الإبلاغ عن أنواع معينة
->withExceptions(function (Exceptions $exceptions) {
$exceptions->dontReport([
InvalidOrderException::class,
]);
})تصيير الاستثناءات
بشكل افتراضي، سيحول معالج استثناءات Laravel الاستثناءات إلى استجابة HTTP لك. ومع ذلك، يمكنك تسجيل إغلاق تصيير مخصص للاستثناءات من نوع معين:
->withExceptions(function (Exceptions $exceptions) {
$exceptions->render(function (InvalidOrderException $e, Request $request) {
return response()->view('errors.invalid-order', [], 500);
});
})استجابات JSON للـ API
->withExceptions(function (Exceptions $exceptions) {
$exceptions->render(function (InvalidOrderException $e, Request $request) {
if ($request->expectsJson()) {
return response()->json([
'error' => 'طلب غير صالح',
'message' => $e->getMessage(),
], 500);
}
});
})استثناءات HTTP
تصف بعض الاستثناءات أكواد أخطاء HTTP من الخادم. يمكنك إنشاء استجابات مخصصة لأكواد حالة HTTP محددة:
abort(404);
abort(403, 'غير مصرح');صفحات أخطاء مخصصة
أنشئ عروض مخصصة لصفحات الأخطاء:
<!-- resources/views/errors/404.blade.php -->
@extends('layouts.app')
@section('content')
<h1>الصفحة غير موجودة</h1>
<p>عذراً، الصفحة التي تبحث عنها غير موجودة.</p>
@endsectionاستثناءات التحقق
عندما يفشل التحقق، يرمي Laravel تلقائياً ValidationException:
$validated = $request->validate([
'email' => 'required|email',
'password' => 'required|min:8',
]);تعرف على المزيد حول معالجة الأخطاء في Laravel من التوثيق الرسمي.
الخاتمة
توفر معالجة الأخطاء في Laravel طريقة أنيقة وموحدة للتعامل مع الاستثناءات في تطبيقك. من خلال تخصيص معالج الاستثناءات، يمكنك التحكم في كيفية الإبلاغ عن الأخطاء وتصييرها للمستخدمين.
برمجة سعيدة مع Laravel 11!
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

البدء مع Laravel 11: التثبيت والتكوين وهيكل المجلدات
البدء مع Laravel 11: التثبيت والتكوين وهيكل المجلدات

10 أساسيات Laravel 11: تجميع الأصول
تعلم أساسيات تجميع الأصول في Laravel 11 باستخدام Vite، بما في ذلك التثبيت والتكوين والأمثلة العملية لتطوير الويب.

9 أساسيات Laravel 11: قوالب Blade
تعلم أساسيات قوالب Blade في Laravel 11، مع التركيز على الميزات الرئيسية والأمثلة العملية لتعزيز مهاراتك في تطوير الويب.