例外をキャッチして処理することは、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 中国語 Web サイトの他の関連記事を参照してください。