إطلاق فئات استثناء مخصصة
عرّف أخطاء النطاق واربطها بـ JSON.
إطلاق فئات استثناء مخصصة درس مجاني في Flask Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Flask Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Flask Academy 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Errors That Speak Your Domain
Numbers like 400 are generic. A custom exception names the real problem, such as a payment that failed or a quota hit.
Subclass an Exception
You start by defining a class that inherits from Exception. This gives you a clear, raisable error of your own.
class PaymentError(Exception):
passAdd a Status Code
Give the class a status_code attribute so a handler knows which HTTP code to send when it fires.
class PaymentError(Exception):
status_code = 402Carry a Message
Store a human message in the constructor. Your handler can later read it and place it into the response body.
def __init__(self, message):
self.message = messageRaise It in a View
Inside a view you simply raise the error when something goes wrong. Flask then looks for a matching handler.
if not paid:
raise PaymentError("Card declined")Handle the Custom Class
Register an errorhandler for your class. It receives the instance, so you can read both its message and status code.
@app.errorhandler(PaymentError)
def on_pay(e):
return e.message, e.status_codeReturn JSON From It
For an API, turn the error into JSON inside the handler. Clients get a structured failure they can parse reliably.
return jsonify(error=e.message), e.status_codeOne Base for Many Errors
Make a single base class and let specific errors subclass it. Then one handler can cover your whole error family.
class ApiError(Exception):
passDefault Sensible Values
Give the base a default status_code like 400. Subclasses override it only when they need a different one.
class ApiError(Exception):
status_code = 400Keep Logic Out of Views
Raising domain errors lets views stay short. The handler owns formatting, so each view just signals what went wrong.
Why This Scales
As an app grows, custom exceptions keep error logic in one tidy spot. New error types plug into the same clean pipeline.
Quick Check
How does a view trigger your domain error?
Recap
You built custom exception classes with a status code and message, raised them in views, and mapped them to clean JSON. Awesome!
الأسئلة الشائعة
هل درس «إطلاق فئات استثناء مخصصة» مجاني؟
نعم — نص درس «إطلاق فئات استثناء مخصصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Flask Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Flask Academy 4 دروس في المجموع.
ماذا ستتعلم في «إطلاق فئات استثناء مخصصة»؟
عرّف أخطاء النطاق واربطها بـ JSON. تتمرن على Flask Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Flask Academy؟
لا تُشترط خبرة سابقة. Flask Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «إطلاق فئات استثناء مخصصة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Flask Academy هذا؟
نعم. كل درس في Flask Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- abort ورموز أخطاء HTTP
- تسجيل دوال errorhandler
- إطلاق فئات استثناء مخصصة
- أغلفة أخطاء JSON موحّدة