捕获和处理异常对于 Python 中的错误处理至关重要。但是,如果未捕获的异常会打印到标准错误输出 (stderr),该怎么办?
虽然始终建议显式捕获和处理异常,但有时可能会方便自动记录未捕获的异常。以下解决方案不依赖于 try/ except 块,而是允许自动进行日志记录:
<code class="python">import sys import logging # Create a custom exception handler def handle_exception(exc_type, exc_value, exc_traceback): if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return # Use the logging module to handle the uncaught exception logger = logging.getLogger(__name__) logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) # Replace the default exception handler with our custom one sys.excepthook = handle_exception # Set up a logger and handler logger = logging.getLogger(__name__) handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) # Raise an exception to test the custom exception handling if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
此代码完成多项任务:
通过自动记录未捕获的异常,此方法简化了错误处理,并提供了一个中心位置来检查程序执行期间发生的所有异常,无论它们是否被捕获.
以上是如何在 Python 中自动记录未捕获的异常?的详细内容。更多信息请关注PHP中文网其他相关文章!