"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تنفيذ معالجة الاستثناء المخصصة مع وحدة تسجيل بيثون؟

كيفية تنفيذ معالجة الاستثناء المخصصة مع وحدة تسجيل بيثون؟

نشرت في 2025-02-04
تصفح:197

How to Implement Custom Exception Handling with Python\'s Logging Module?

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

استيراد sys استيراد قطع الأشجار logger = logging.getLogger (__ name__) معالج = تسجيل الدخول. logger.addhandler (معالج) def handle_exception (exc_type ، exc_value ، exc_traceback): # تجاهل لوحة المفاتيح حتى يتمكن التطبيق من الخروج باستخدام Ctrl C إذا كانت issubClass (exc_type ، لوحة المفاتيح): sys .__ excepthook __ (exc_type ، exc_value ، exc_traceback) يعود # سجل الاستثناء غير المطلوب logger.error ("استثناء غير معطل" ، exc_info = (exc_type ، exc_value ، exc_traceback))) sys.excepthook = handle_exception # مثال رمز لاختبار معالجة الاستثناء المخصص إذا __name__ == "__main__": ارفع timeerror ("اختبار unhandled")

التفسير عندما يحدث استثناء غير معطل. ] يرفق معالج الاستثناء المخصص بوظيفة Sys.ExcepThook.

يتدخل ويسجل تفاصيل الاستثناء إلى المعالج المكون. في هذه الحالة ، يتم استخدام معالج الدفق الافتراضي لإخراج معلومات الاستثناء إلى stdout.

import sys
import logging

logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

def handle_exception(exc_type, exc_value, exc_traceback):
    # Ignore KeyboardInterrupt so the application can exit with Ctrl   C
    if issubclass(exc_type, KeyboardInterrupt):
        sys.__excepthook__(exc_type, exc_value, exc_traceback)
        return

    # Log the uncaught exception
    logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))

sys.excepthook = handle_exception

# Example code to test the custom exception handling
if __name__ == "__main__":
    raise RuntimeError("Test unhandled")
بيان الافراج يتم استنساخ هذه المقالة في: 1729608201 إذا كانت هناك انتهاكات ، يرجى الاتصال بـ [email protected] لحذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3