ما هو الخطأ؟
في لغات البرمجة، إذا قمنا بتنفيذ بعض التعليمات البرمجية بطريقة غير صالحة، فسيتم إيقاف تنفيذ البرنامج برسالة وتسمى هذه الرسالة خطأ أو استثناء. هناك أنواع معينة من الأخطاء في لغة البرمجة لأسباب مختلفة. بعض منها على النحو التالي:
خطأ في التأكيد:
يحدث هذا النوع من الأخطاء عندما تفشل شروط أو عبارات التأكيد في التعليمات البرمجية.
خطأ في الاستيراد:
يحدث هذا الخطأ عندما نقوم باستيراد بعض الوحدات النمطية في الملف وإذا كانت هذه الوحدة غير موجودة.
خطأ في الفهرس:
ويحدث ذلك عندما يكون فهرس أي تسلسل خارج النطاق.
خطأ رئيسي:
يظهر هذا الخطأ في لغة بايثون عندما لا نتمكن من العثور على أي مفتاح في القاموس.
خطأ في الاسم:
يمكن أن يحدث هذا الخطأ عندما لا نجد أي متغير في النطاق المحلي أو العام.
خطا وقت التشغيل:
سيظهر هذا الخطأ عندما لا يمكن تصنيف الخطأ في أي نوع.
خطأ في المسافة البادئة:
عندما نستخدم مسافة بادئة خاطئة في كود بايثون، سيحدث IndentationError.
خطأ في النظام:
عندما يكون هناك خطأ داخلي، فسيتم تشغيل SystemError بواسطة المترجم.
خطأ يونيكود:
عندما يكون هناك خطأ في التشفير أو فك التشفير يتعلق بـ Unicode وUnicodeError، فسيتم ظهوره.
خطأ في القيمة:
عندما نقوم بتمرير الوسيطة الصحيحة وفقًا لنوع البيانات، ولكن القيمة غير صحيحة، فإن الخطأ الذي حدث يسمى ValueError.
خطأ في القسم الصفري:
كما نعلم، في الرياضيات، لا يمكننا قسمة أي عدد على صفر لأن النتيجة تميل إلى ما لا نهاية. لذا، إذا كتبنا أي عبارة بخصوص القسمة على صفر أو modulo على صفر، فسيكون الخطأ الناتج هو ZeroDivisionError.
خطأ:
عندما نستخدم الدالة input() للحصول على المدخلات من ملف، ونصل إلى نهاية الملف، فسيظهر هذا الخطأ للإشارة إلى أننا وصلنا إلى نهاية الملف، والآن لا يمكننا أخذ أي الإدخال من الملف.
هذه المقالة مخصصة بشكل أساسي لـ AttributeError.
ما هو خطأ في السمة؟
يحدث هذا الخطأ في البرنامج عندما يكون هناك فشل في تكييف تعيين السمة. على سبيل المثال، إذا قمنا بتعيين قيمة لمتغير عدد صحيح وحاولنا استخدام أي دالة سلسلة من هذا المتغير، فسيؤدي ذلك إلى ظهور خطأ AttributeError.
يمكننا أن نفهم سبب خطأ AttributeError في بايثون من خلال الأمثلة التالية:
مثال 1:
عندما نطبق وظيفة على نوع بيانات مختلف وهو أمر غير ممكن
a=15 a.append('javatpoint')
انتاج:
توضيح:
في الكود أعلاه، لدينا متغير صحيح واحد، وقد قمنا بتهيئته بالقيمة 15. الآن، إذا استخدمنا وظيفة الإلحاق على المتغير a، فسوف يعطي خطأ AttributeError، الذي يشير إلى أنه لا توجد سمة كإلحاق في نوع البيانات الصحيح.
مثال 2:
هناك احتمالات لحدوث AttributeError في التهجئة الخاطئة للسمة.
string = 'you will learn each coding tutorial from '.fst('Javatpoint') print(string)
انتاج:
توضيح:
في الكود أعلاه، لدينا سمة سلسلة، وقمنا بتطبيق السمة fst، لذلك سيكون هناك خطأ في AttributeError مفاده أن هذه السمة غير موجودة للمتغير.
يساوي جافا
مثال 3:
يمكننا الحصول على AttributeError إذا حاولنا عمل مرجع خاطئ لأي متغير فئة.
class Javatpoint(): def __init__(self): self.var1 = 'This is for JavatPoint' obj = Javatpoint() print(obj.var1) print(obj.var2)
انتاج:
توضيح:
في الكود أعلاه، لدينا فئة، وهناك متغير اسمه var1. قمنا بإنشاء كائن الفئة، وعن طريق الخطأ، قمنا بالإشارة إلى المتغير الخاطئ var2 لتلك الفئة والذي لا وجود له، لذلك سيكون هناك بالتأكيد خطأ في AttributeError.
الحل لمعالجة الخطأ أو الاستثناء:
في Python أو في أي لغة برمجة، يمكننا استخدام الاستثناء أو معالجة الأخطاء باستخدام عبارات المحاولة والاستثناء.
مثال 4:
class Javatpoint(): def __init__(self): self.var1 = 'This is for javatpoint' obj = Javatpoint() try: print(obj.var1) print(obj.var2) except AttributeError: print('There is no such attribute')
انتاج:
توضيح:
في الكود أعلاه، لدينا فئة ومتغير اسمه var1. في بيان المحاولة، نحاول الإشارة إلى var1 وvar2. سنكون قادرين على إلغاء الإشارة إلى var1، وسنطبع البيان الخاص به، لكننا سنحصل على AttributeError للإشارة إلى var2. لذلك، سيدخل البرنامج إلى ما عدا الكتلة، وسوف نقوم بطباعة البيان، الذي يتم كتابته فقط لحالة الخطأ.