Pythonでは、例外はtry-except
ブロックを使用して処理されます。基本構造には、 try
ブロック内で例外を提起する可能性のあるコードを作成し、 except
ブロックで例外を処理することが含まれます。 ZeroDivisionError
処理する方法の例は次のとおりです。
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Error: Division by zero!")</code>
ブロックexcept
、それぞれが異なるタイプの例外を処理することを除いて、より多くを含めることにより、複数の例外を処理できます。さらに、句をexcept
汎用を使用して、明示的に処理されていない例外をキャッチできます。
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Error: Division by zero!") except ValueError: print("Error: Invalid value!") except: print("An unexpected error occurred!")</code>
また、Pythonを使用すると、 raise
キーワードを使用して例外を明示的に提起することもできます。これは、カスタムエラー処理や、 except
ブロックで何らかのアクションを実行した後に例外を再審理するのに役立ちます。
例外を効果的に管理することは、堅牢なPythonコードを作成するために重要です。ここにいくつかのベストプラクティスがあります:
except
広い範囲を使用するのではなく、特定の例外をキャッチします。これは、発生したエラーの種類をよりよく理解し、適切に処理するのに役立ちます。finally
クリーンアップに使用します。 finally
ブロックを使用して、例外が発生したかどうかに関係なく、ファイルハンドル、ネットワーク接続、データベース接続などのリソースが適切に閉じられていることを確認します。except
むき出しを避けてください:clauses except
clausesは、 SystemExit
やKeyboardInterrupt
などのシステムを拡張する例外を含め、予想されない例外をキャッチできます。ほとんどの例外をキャッチするが、システムを拡張するものではないため、 except Exception
使用する方が良いです。with
) :クリーンアップする必要があるリソースを使用する場合は、リソース管理とクリーンアップを自動的に処理するコンテキストマネージャーを使用します。logging
モジュールを使用して、例外を効果的に記録します。 Python例外処理において、 try-except
およびtry-finally
ブロックはさまざまな目的を果たします。
try-except :このブロックは、 try
ブロック内で発生する例外をキャッチおよび処理するために使用されます。 Block except
、 try
ブロックで例外が表示された場合にのみ実行されます。主な目的は、例外を優雅に処理し、可能であればプログラムの実行を継続することです。
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Error: Division by zero!")</code>
try-finally :このブロックは、 try
ブロックで例外が発生したかどうかに関係なく、 finally
ブロックでコードを実行するために使用されます。 finally
ブロックは通常、クリーンアップ操作に使用され、リソースが適切にリリースされるようにします。
<code class="python">file = None try: file = open("example.txt", "r") content = file.read() finally: if file: file.close()</code>
要約すると、 try-except
例外の処理に焦点を当てていますが、 try-finally
例外が発生した場合でも、特定のコード(多くの場合、クリーンアップコード)が常に実行されることを保証します。
ログの例外は、アプリケーションのデバッグと維持に効果的に重要です。 Pythonで例外を記録するためのいくつかの戦略を以下に示します。
logging
モジュールを使用してください。Pythonのlogging
モジュールは、Pythonプログラムからログメッセージを放出するための柔軟なフレームワークを提供します。このモジュールをコンソールに印刷するだけでなく、例外を記録するために使用することをお勧めします。
<code class="python">import logging logging.basicConfig(filename='app.log', level=logging.ERROR) try: result = 10 / 0 except ZeroDivisionError as e: logging.error("An error occurred", exc_info=True)</code>
コンテキストを含める:常にログメッセージに関連するコンテキストを含める。これには、ユーザーID、トランザクションID、またはエラーをソースに戻すのに役立つその他の情報が含まれます。
<code class="python">logging.error("An error occurred while processing user %s", user_id, exc_info=True)</code>
exc_info=True
パラメーターを使用して、例外の完全なトレースバックをログに記録します。これにより、例外が発生した場所と理由に関する詳細情報が提供されます。カスタムログ形式:タイムスタンプ、重大度レベル、およびその他の関連する詳細を含むカスタムログ形式を構成します。これは、ログをより効果的に分析するのに役立ちます。
<code class="python">logging.basicConfig( format='%(asctime)s - %(levelname)s - %(message)s', filename='app.log', level=logging.ERROR )</code>
これらのプラクティスに従うことにより、例外が効果的に記録されるようにし、Pythonアプリケーションの問題を診断して修正しやすくすることができます。
以上がPythonで例外をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。