«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать пользовательскую обработку исключений с помощью модуля журнала Python?

Как реализовать пользовательскую обработку исключений с помощью модуля журнала Python?

Опубликовано в 2025-02-04
Просматривать:332

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

изготовление пользовательской обработки ошибок с помощью модуля ведения журнала Python

обеспечить правильное обработанное и зарегистрированное исключения для непредубеждений и регистрации. приложение Python. В то время как исключения вручную и ведение журнала является жизнеспособным подходом, он может быть утомительным и подверженным ошибкам.

Для решения этой проблемы Python позволяет переопределить механизм обработки исключений по умолчанию и перенаправить исключения Uncaught в модуле журнала. Это обеспечивает удобный и систематический способ захватить и подробную информацию об исключении журнала. Определяя пользовательский обработчик исключений, вы можете перехватить все не учитывающиеся исключения и обрабатывать их по желанию. Вот полный и надежный пример:

import Sys Импорт журнала logger = logging.getLogger (__ name__) Handler = logging.streamHandler (stream = sys.stdout) logger.addhandler (обработчик) def harder_exception (exc_type, exc_value, exc_traceback): # Игнорировать keyboardintrupt, чтобы приложение мог выйти с Ctrl c Если IssubClass (exc_type, keyboardintrupt): Sys .__ ExceptHook __ (Exc_Type, Exc_Value, Exc_Traceback) возвращаться # Зарегистрируйте исключение Uncaught logger.error ("uncaught exception", exc_info = (exc_type, exc_value, exc_traceback)))) sys.excepthook = handle_exception # Пример кода для проверки пользовательской обработки исключений Если __name__ == "__main__": поднять runtimeerror ("test uldedled")

объяснение

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")

определяет обработчик пользовательского исключения, handle_exception, который вызывается Когда возникает неотъемлемое исключение. ] Прикрепляет пользовательский обработчик исключений к функции Sys.ExcepThook. Вмешивает и регистрирует детали исключения в настроенный обработчик. В этом случае обработчик потока по умолчанию используется для вывода информации об исключении в stdout.

дополнительные функции

  • Пример также включает в себя несколько необязательных функций:
  • ]
  • Filmenting:
  • игнорировать определенные типы исключений (например, Keyboard Interrupt) с использованием подкласса. обработчики для управления форматом вывода и назначения журналов исключений.
  • ]
Заявление о выпуске Эта статья воспроизведена в: 1729608201, если есть нарушения, пожалуйста, свяжитесь с учебным устройством по адресу
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3