изготовление пользовательской обработки ошибок с помощью модуля ведения журнала 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.
дополнительные функции
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3