اهلا ومرحبا بكم في مدونه : Cyber1101 انظم للمجتمع

Errors Python مفهوم الاخطاء في بايثون


 



مفهوم معالجة الاخطاء في بايثون


معالجة الأخطاء في بايثون تعني التعامل مع أي استثناء (exception) قد يحدث خلال تنفيذ برنامج بايثون. و يمكن أن يحدث استثناء في حالة وجود خطأ في البرنامج أو عدم وجود مورد مطلوب أو أي حالة غير متوقعة أخرى.

عادةً ما يتم التعامل مع الأخطاء في بايثون باستخدام بيانات try/except. يتم وضع الشيفرة المحتملة للخطأ داخل كتلة try، وإذا حصل خطأ معين، تمتلئ المتغيرات التي يحملها الاستثناء بمعلومات الخطأ، على سبيل المثال رسالة الخطأ ونوع الخطأ. بعد ذلك، يتم التعامل مع هذا الخطأ داخل كتلة except، ويتم اتخاذ إجراء مناسب لمعالجة الخطأ.

و بالطبع يمكن استخدام أكثر من كتلة except للتعامل مع أنواع معينة من الأخطاء بشكل منفصل.

جملة try في بايثون


في Python يمكن استخدام الجملة try لتجريب تنفيذ كود والتعامل مع الاستثناءات التي قد تحدث أثناء تنفيذه. على سبيل المثال:



try:
   # هنا يتم وضع الكود الذي نريد تجريب تنفيذه
except:
   # هنا يتم وضع الكود الذي يتم تنفيذه في حال حدوث استثناء خلال تنفيذ الكود السابق
finally:
   # هنا يتم وضع الكود الذي يتم تنفيذه دائمًا سواء حدث استثناء أو لا



يمكن استخدام كلمة except بدون تحديد نوع الاستثناء، أو يمكن تحديد نوع معين من الاستثناءات باستخدام الكلمة المفتاحية except مع اسم الاستثناء المطلوب، على سبيل المثال:



try:
   # هنا يتم وضع الكود الذي نريد تجريب تنفيذه
except ValueError:
   # هنا يتم وضع الكود الذي يتم تنفيذه في حال حدوث استثناء من نوع ValueError
finally:
   # هنا يتم وضع الكود الذي يتم تنفيذه دائمًا سواء حدث استثناء أو لا



ويمكن أيضًا استخدام عدة كلمات except مع مزيد من التحديد في أنواع الاستثناءات، كما يمكن استخدام الجملة المفتاحية else لتنفيذ كود إضافي في حال عدم حدوث أي استثناءات.


جملة except في بايثون


في Python ، "except" هو كلمة مفتاحية تُستخدَم في تعبيرات استثناء الأخطاء (Exception Handling). يتم استخدامها في جملة try...except للتعامل مع الأخطاء والاستجابة لها. على سبيل المثال:


try:
    # الكود الذي يحتمل حدوث خطأ فيه
    result = 10 / 0
except ZeroDivisionError:
    # التعامل مع الخطأ بشكل مناسب
    print("حدث خطأ! لا يمكن القسمة على الصفر")



في هذا المثال ، يتم استخدام except مع ZeroDivisionError لالتقاط أي خطأ يحدث عند محاولة القسمة على الصفر ومن ثم يتم اتخاذ إجراء مناسب للتعامل مع الخطأ.

جملة finally في بايثون


finally في بايثون هي عبارة عن كلمة محجوزة تستخدم في جملة try-except-finally، وتُستخدم لتعريف كود يتم تنفيذه بغض النظر عما إذا حدث استثناء أم لا. 


على سبيل المثال، إذا كان لديك كودًا يحاول فتح ملف وقراءته، فإن جملة finally يمكن استخدامها لإغلاق الملف بغض النظر عن ما إذا نجحت عملية القراءة أم لا:


try:
    file = open("example.txt")
    # قراءة الملف
except:
    # معالجة الاستثناءات
finally:
    file.close() # يتم إغلاق الملف في هذا السياق دائمًا



جملة else في بايثون


في بايثون، يمكن استخدام else في بلوك except لتحديد تعليمات إضافية تُنفَّذ في حال لم يُثير أي استثناء. وبهذا الشكل، فإن بلوك else سيتم تنفيذه إذا لم يتم القبض على أي استثناء في الكود.

يمكن استخدام else في مثل هذا السياق:


try:
    # الكود الرئيسي
except SomeException:
    # ادخال المهام اللازمة للتعامل مع الاستثناء
else:
    # ادخال المهام التي يجب تنفيذها في حال عدم ظهور استثناء



إذا تم رفع أي استثناء داخل الكود الرئيسي، فسيتم تنفيذ بلوك except. أما إذا لم يتم رفع أي استثناء، فيتم تنفيذ بلوك else.

الاستثناءات الجاهزة في بايثون


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

  •  ValueError: استثناء يتم رفعه عند اكتشاف قيمة غير صالحة لنوع محدد.

  •  TypeError: استثناء يتم رفعه عند محاولة تنفيذ عملية لا تتوافق مع نوع البيانات.

  •  IndexError: استثناء يتم رفعه عند محاولة الوصول إلى عنصر في مؤشر خارج حدود النطاق الصحيح.

  • KeyError: استثناء يتم رفعه عند محاولة الوصول إلى مفتاح غير موجود في القاموس.

  •  IOError: استثناء يتم رفعه عند حدوث خطأ في التعامل مع ملفات الإدخال / الإخراج.

  •  ImportError: استثناء يتم رفعه عند فشل محاولة استيراد وحدة / برنامج تعليمي.

  • AttributeError: استثناء يتم رفعه عندما يتم الوصول إلى سمة أو طريقة غير موجودة في كائن.

  • KeyboardInterrupt: استثناء يتم رفعه عندما يتم الضغط على مفتاح انقطاع البرنامج (CTRL + C) في نافذة الأوامر.

الكلمة المفتاحية raise في بايثون


raise في بايثون هي عبارة عن كلمة مفتاحية تستخدم لرفع استثناء (exception) يدويًا في الشفرة. يتم استخدام الكلمة raise عادةً في حالات وجود خطأ أو استثناء يجب التعامل معه بشكل يدوي، عوضًا عن السماح للبرنامج بإنهاء التنفيذ بشكل غير صحيح.

يمكن استخدام الكلمة raise في صياغة استثناءات من الأنواع المختلفة، على سبيل المثال:



raise ValueError("Invalid value")

 يتم رفع استثناء من نوع ValueError وإرفاق رسالة "Invalid value" بالاستثناء.


raise TypeError("Invalid type")

 يتم رفع استثناء من نوع TypeError وإرفاق رسالة "Invalid type" بالاستثناء.


raise Exception("Unknown error")

 يتم رفع استثناء عام من نوع Exception وإرفاق رسالة "Unknown error" بالاستثناء.

مثال علئ جملة raise في بايثون


في بايثون، يستخدم raise لإطلاق (رمي) الاستثناءات (Exceptions). على سبيل المثال، إذا كان لديك دالة تحتوي على قيمة محددة يجب أن تكون أكبر من صفر، يمكنك استخدام raise لرمي استثناء ValueError عندما يتم إدخال قيمة غير صالحة.

هذا هو مثال بسيط يوضح كيفية استخدام raise في بايثون:


def calculate_square_root(num):
    if num < 0:
        raise ValueError("الرقم لا يمكن أن يكون أقل من الصفر")
    else:
        return math.sqrt(num)
print(calculate_square_root(16))   # النتيجة: 4.0
print(calculate_square_root(-16))  # يتم رفع ValueError exception



في هذا المثال، يتم استخدام raise لرفع استثناء ValueError إذا كان الرقم الممر إلى الدالة أقل من الصفر. إذا كان الرقم الممر إلى الدالة يساوي أو يزيد عن الصفر، فإن الدالة تعيد جذر التربيعي للرقم.

إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.