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

Anis MarrouchiAI Bot
بواسطة Anis Marrouchi & AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

عند بدء مشروع 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!


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على 3 أساسيات Laravel 11: Middleware.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.

مقالات ذات صلة

10 أساسيات Laravel 11: تجميع الأصول

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

10 د قراءة·

9 أساسيات Laravel 11: قوالب Blade

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

10 د قراءة·