English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل تعليمات Python الأساسية

تحكم العملية في Python

الوظائف في بايثون

أنواع البيانات في بايثون

عمليات ملفات Python

أهداف وطبقات Python

تاريخ ووقت Python

معرفة متقدمة لـ Python

كتيب مرجعي لـ Python

ال أخطاء والاستثناءات المدمجة في بايثون

عندما يواجه المترجم خطأ، يُطلق استثناءً. على سبيل المثال: تقسيم على الصفر. في هذا المقال، ستعرف عن معالجة الاستثناءات المدمجة في Python.

في كتابة البرامج، نكون عادةً نتعرض إلى أخطاء.

الخطأ الذي يحدث بسبب عدم اتباع بنية اللغة الصحيحة (اللغة النصية) يُطلق عليه خطأ النص أو خطأ التحليل.

>>> if a < 3
  ملف "<الإدخال التفاعلي>"، سطر 1
    if a < 3
           ^
SyntaxError: syntax غير صحيح

في هذه الحالة يمكن ملاحظة أن هناك نقصًا في علامة التعريف في جملة if.

الخطأ قد يحدث أثناء التشغيل، ويُطلق عليه الاستثناءات. على سبيل المثال، عندما نحاول فتح ملف غير موجود (FileNotFoundError)، أو تقسيم الرقم على الصفر (ZeroDivisionError)، أو عدم العثور على المodule الذي نحاول استيراده (ImportError)، يحدث هذا النوع من الأخطاء.

عندما يحدث هذا النوع من الأخطاء في التشغيل الوقت الحقيقي، يقوم Python بإنشاء كائن استثناء. إذا لم يتم التعامل معه بشكل صحيح، سيقوم بإخراج سجله المعاكس، وإعطاء بعض التفاصيل حول سبب حدوث الخطأ.

>>> 1 / 0
Traceback (أحدث استدعاء مؤخرًا):
 ملف "<string>", خط 301، في runcode
 ملف "<إدخال تفاعلي>", خط 1، في <module>
ZeroDivisionError: تقسيم بلا نهاية
>>> open("imaginary.txt")
Traceback (أحدث استدعاء مؤخرًا):
 ملف "<string>", خط 301، في runcode
 ملف "<إدخال تفاعلي>", خط 1، في <module>
FileNotFoundError: [Errno 2] لا يوجد ملف أو مجلد: 'imaginary.txt'

استثناءات مدمجة في Python

قد تُثير العمليات غير القانونية استثناءً. هناك العديد من الاستثناءات المدمجة في Python، وستُثير هذه الاستثناءات عند حدوث الأخطاء المناسبة. يمكننا استخدام الدالة المدمجة local() لرؤية جميع الاستثناءات المدمجة، كما هو موضح أدناه.

>>> locals()['__builtins__']

سيقوم هذا بتقديم لنا قاموس الاستثناءات، الدوال، والخصائص المدمجة.

يُظهر هذا القائمة ببعض الاستثناءات المدمجة الشائعة في برمجة Python وكذلك الأخطاء التي تؤدي إلى هذه الاستثناءات.

استثناءات القياسية المدمجة في Python
استثناءسبب الخطأ
AssertionErrorتُثير عند فشل جملة assert.
AttributeErrorتُثير عند فشل تخصيص أو استدعاء الخاصية.
EOFErrorتُثير عند وصول input() إلى حالة نهاية الملف.
FloatingPointErrorتُثير عند فشل عملية حساب العدد العشوائي.
GeneratorExitتُثير عند استدعاء طريقة close() على مولد.
ImportErrorتُثير عند عدم العثور على المodule المُستورد.
IndexErrorتُثير عند تجاوز نطاق فهرس السلسلة.
KeyErrorتُثير عند عدم العثور على مفتاح في القاموس.
KeyboardInterruptتُثير عند ضغط المستخدم على مفتاح الاستدعاء (Ctrl + c أو Delete).
MemoryErrorتُثير عند عدم كفاية ذاكرة الوصول العشوائي أثناء التشغيل.
NameErrorتُثير عند عدم العثور على المتغير في النطاق المحلي أو العالمي.
NotImplementedErrorالطريقة التي لم يتم تنفيذها بعد.
OSError当系统操作导致系统相关错误时引发。
OverflowError当算术运算的结果太大而无法表示时引发。
ReferenceError在使用弱引用代理访问垃圾收集的引用对象时引发。
RuntimeError当错误不属于任何其他类别时引发。
StopIteration由next()函数引发,以指示迭代器没有其他项目可返回。
SyntaxError遇到语法错误时由解析器引发。
IndentationError缩进不正确时引发。
TabError当缩进由不一致的制表符和空格组成时引发。
SystemError在解释器检测到内部错误时引发。
SystemExit由sys.exit()功能引发。
TypeError当函数或操作应用于错误类型的对象时引发。
UnboundLocalError在对函数或方法中的局部变量进行引用但没有值绑定到该变量时引发。
UnicodeError在发生与Unicode相关的编码或解码错误时引发。
UnicodeEncodeError在编码过程中发生与Unicode相关的错误时引发。
UnicodeDecodeError在解码期间发生与Unicode相关的错误时引发。
UnicodeTranslateError在翻译过程中发生Unicode相关错误时引发。
ValueError当函数获取正确类型但值不正确的参数时引发。
ZeroDivisionError当除法或模运算的第二个操作数为零时引发。

我们也可以在Python中定义我们自己的异常(如果需要的话)。访问此页面以了解有关用户定义的异常的更多信息。 

我们可以使用try、except和finally语句在Python中处理这些内置的和用户定义的异常