تعد كتابة تعليمات برمجية فعالة لمعالجة الاستثناءات أمرًا ضروريًا لإنشاء تطبيقات قوية وقابلة للصيانة.
فيما يلي بعض أفضل الممارسات لكتابة كود معالجة الاستثناءات في بايثون:
كن محددًا:
try: # Code that might raise an exception except ValueError as e: print(f"Value error occurred: {e}")
التقاط استثناءات محددة:
try: # Code that might raise an exception except Exception as e: # Catch all exceptions if necessary print(f"An error occurred: {e}")
try: # Code that might raise an exception except ValueError as e: print(f"Value error: {e}") else: print("No exceptions occurred.") finally: print("This will always be executed.")
import logging logging.basicConfig(level=logging.ERROR) try: # Code that might raise an exception except Exception as e: logging.error(f"An error occurred: {e}")
try: # Code that might raise an exception except ValueError as e: logging.error(f"Value error: {e}") raise # Re-raise the exception
with open('file.txt', 'r') as file: content = file.read()
- بدلاً من السماح لتطبيقك بالتعطل، قم بتوفير آليات احتياطية أو رسائل خطأ سهلة الاستخدام.
try: with open('config.json', 'r') as file: config = json.load(file) except FileNotFoundError: print("Config file not found, using defaults.") config = {"default": "value"}
try: # Code that might raise an exception except Exception as e: pass # Bad practice - you're ignoring the error
def divide(a, b): """ Divides two numbers. :param a: Numerator. :param b: Denominator. :return: The result of the division. :raises ZeroDivisionError: If the denominator is zero. """ if b == 0: raise ZeroDivisionError("Cannot divide by zero.") return a / b
class InvalidInputError(Exception): """Exception raised for invalid inputs.""" pass def process_input(value): if not isinstance(value, int): raise InvalidInputError("Input must be an integer.") return value * 2
def test_divide(): assert divide(10, 2) == 5 with pytest.raises(ZeroDivisionError): divide(10, 0)
استخدام الاستثناءات للحالات الاستثنائية:
# Bad practice: using exceptions for control flow try: while True: value = next(iterator) except StopIteration: pass # End of iteration
try: result = process_input(input_value) except InvalidInputError as e: raise ValueError("Failed to process input") from e
من خلال اتباع أفضل الممارسات هذه، يمكنك كتابة تعليمات برمجية أكثر قوة وقابلة للصيانة وقابلة للقراءة للتعامل مع الاستثناءات والتي تدير الأخطاء بأمان وتعزز موثوقية التطبيق الخاص بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3