رفع الاستثناءات وإعادة رفعها
استخدم raise للإشارة إلى الأخطاء، وأعد رفعها لمواصلة تمريرها
رفع الاستثناءات وإعادة رفعها درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
مقدمة
رفع استثناء مضمن باستخدام raise
def divide(a, b):
if b == 0:
raise ValueError('Denominator cannot be zero')
return a / b
try:
divide(5, 0)
except ValueError as e:
print(e)إعادة رفع الاستثناء نفسه
def process(data):
try:
return int(data)
except ValueError:
print('logging error')
raise # re-raises original
try:
process('abc')
except ValueError:
print('caller caught it')تسلسل الاستثناءات باستخدام from
try:
int('abc')
except ValueError as original:
raise RuntimeError('processing failed') from originalمنع تسلسل الاستثناءات
try:
int('abc')
except ValueError:
raise RuntimeError('clean error') from Noneتعليمة assert
def sqrt(x):
assert x >= 0, f'Input must be non-negative, got {x}'
return x ** 0.5
try:
sqrt(-1)
except AssertionError as e:
print(e)الرفع المشروط
def process(items):
if not items:
raise ValueError('items must not be empty')
return items[0]
print(process([1, 2, 3]))إعادة الرفع مقابل استثناء جديد
def outer():
try:
inner()
except ValueError as e:
raise RuntimeError('outer failed') from e
def inner():
raise ValueError('inner failed')
try:
outer()
except RuntimeError as e:
print(e, e.__cause__)الاستثناء داخل finally
try:
try:
raise ValueError('original')
finally:
print('finally ran')
except ValueError as e:
print('caught:', e)warnings.warn مقابل raise
import warnings
def old_func():
warnings.warn('Deprecated', DeprecationWarning)
return 42
print(old_func())نمط raise from None
class DBError(Exception): pass
def query(q):
try:
raise ConnectionError('refused')
except ConnectionError:
raise DBError('query failed') from None
try:
query('SELECT 1')
except DBError as e:
print(e)تحقق سريع
مراجعة
تابع التقدم
الأسئلة الشائعة
هل درس «رفع الاستثناءات وإعادة رفعها» مجاني؟
نعم — نص درس «رفع الاستثناءات وإعادة رفعها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «رفع الاستثناءات وإعادة رفعها»؟
استخدم raise للإشارة إلى الأخطاء، وأعد رفعها لمواصلة تمريرها تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «رفع الاستثناءات وإعادة رفعها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فهم الاستثناءات
- try / except / else / finally
- رفع الاستثناءات وإعادة رفعها
- فئات الاستثناءات المخصصة