فئات الاستثناءات المخصصة
عرّف أنواع الاستثناءات الخاصة بك لتوضيح رسائل الأخطاء
فئات الاستثناءات المخصصة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
مقدمة
لماذا نستخدم الاستثناءات المخصصة؟
class AppError(Exception):
pass
raise AppError('something went wrong')الوراثة من Exception
class ValidationError(Exception):
pass
try:
raise ValidationError('email is invalid')
except ValidationError as e:
print(e)إضافة سمات مخصصة
class APIError(Exception):
def __init__(self, status, message):
self.status = status
super().__init__(message)
try:
raise APIError(404, 'Not found')
except APIError as e:
print(e.status, e)تسلسل الاستثناءات الهرمي
class AppError(Exception): pass
class DBError(AppError): pass
class NetworkError(AppError): pass
try:
raise DBError('timeout')
except AppError as e:
print('app error:', e)دالة __str__ مخصصة
class RangeError(ValueError):
def __init__(self, val, lo, hi):
self.val, self.lo, self.hi = val, lo, hi
def __str__(self):
return f'{self.val} not in [{self.lo}, {self.hi}]'
print(RangeError(15, 0, 10))رفع الاستثناءات المخصصة
class InsufficientFundsError(Exception):
def __init__(self, needed, available):
super().__init__(f'Need {needed}, have {available}')
def withdraw(balance, amount):
if amount > balance:
raise InsufficientFundsError(amount, balance)
return balance - amount
try:
withdraw(100, 200)
except InsufficientFundsError as e:
print(e)الالتقاط باستخدام الفئة الأساسية
class AppError(Exception): pass
class DBError(AppError): pass
try:
raise DBError('conn failed')
except AppError:
print('any app error')الاستثناء مع مدير السياق
class SuppressValue(Exception): pass
try:
raise SuppressValue('ignored')
except SuppressValue:
pass # suppress silently
print('continued')توثيق الاستثناءات المخصصة
class ConfigError(Exception):
"""Raised when configuration is invalid.
Attributes:
key: The invalid config key
"""
def __init__(self, key, msg):
super().__init__(msg)
self.key = keyأفضل الممارسات
# Good structure:
class AppError(Exception): pass
class ValidationError(AppError): pass
class NotFoundError(AppError): pass
print('hierarchy demo')تحقق سريع
مراجعة
تابع التقدم
الأسئلة الشائعة
هل درس «فئات الاستثناءات المخصصة» مجاني؟
نعم — نص درس «فئات الاستثناءات المخصصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «فئات الاستثناءات المخصصة»؟
عرّف أنواع الاستثناءات الخاصة بك لتوضيح رسائل الأخطاء تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «فئات الاستثناءات المخصصة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فهم الاستثناءات
- try / except / else / finally
- رفع الاستثناءات وإعادة رفعها
- فئات الاستثناءات المخصصة