この記事では、try-excel ブロック、カスタム例外、例外チェーンやエンリッチメントなどの高度な機能など、Python で例外を処理するために使用されるさまざまな手法について説明します。
Python は、プログラマがクラッシュを防ぐコードを実装できるだけでなく、フィードバックを提供してアプリケーションの安定性を維持できる堅牢な例外処理フレームワークを提供します。さらに、開発者は Try-Except ブロックやカスタム例外などの構造を使用してエラーを適切に管理できます。
- Try-Except ブロック
try-Except ブロックでは、例外を発生させる可能性のあるコードが try ブロック内に配置され、例外ブロックは例外が発生した場合に実行するアクションを指定します (Python Software Foundation、未確認)。
例:
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
1 つの try-Except ブロックで複数の例外をキャッチするには、複数の例外ブロックを持つ try-ブロックを使用して、例外タイプごとに特定の応答を生成できます。または、タプルを使用して、単一の例外式で複数の例外をキャッチすることもできます。
例:
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
- Else 条項
else 句は、try-excel ブロックの後に配置され、try ブロックが例外を発生させない場合に実行されます。
例:
try: result = 1 / 2 except ZeroDivisionError: print(“Cannot divide by zero.”) else: print(“Division successful.”)
-Finally 節
finally 節は常に try ブロックまたは任意の例外ブロックの後に配置されます。これには、例外が発生した場合でも、通常はファイルやネットワーク接続などのリソースをクリーンアップするために、何があっても実行されるコードが含まれています。
例:
try: result = 1 / ‘a’ except ZeroDivisionError: print(“Cannot divide by zero.”) except TypeError: print(“Type error occurred.”) else: print(“Division successful.”) finally: print(“Goodbye, world!”)
例外の発生: raise 句は、通常、特定の条件が満たされていないことを示すために、例外を強制的に発生させることによって例外を発生させます。
例:
if ‘a’ > 5: raise ValueError(“A must not exceed 5”)
- 例外チェーン
raise 句を使用して例外を連鎖させることができます。これは、元のエラーにコンテキストを追加する場合に便利です。
例
try: open(‘myfile.txt’) except FileNotFoundError as e: raise RuntimeError(“Failed to open file”) from e
- カスタム例外
Exception クラスまたは他の組み込み例外クラスから継承することで、独自の例外クラスを定義できます (Mitchell、2022)。
例:
class My_custom_ (Exception): pass try: raise MyCustomError(“An error occurred”) except MyCustomError as e: print(e)
- 例外の充実
add_note() メソッドを使用して、カスタム メッセージやメモを例外オブジェクト (別名 e) に「追加」することで、例外に情報やコンテキストを追加できます。
例:
def divide_numbers(a, b): try: result = a / b except ZeroDivisionError as e: e.add_note(“Cannot divide by zero”) e.add_note(“Please provide a non-zero divisor”) raise try: num1 = 10 num2 = 0 divide_numbers(num1, num2) except ZeroDivisionError as e: print(“An error occurred:”) print(str(e))
例外の処理は、次のような理由から重要です。
簡単なプログラムエラー処理の例:
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
要約すると、Python は、プログラムが突然失敗することなく予期せぬ状況を処理できるようにする包括的な例外処理フレームワークを提供します。 Try-Except ブロック、カスタム例外、例外チェーンやエンリッチメントなどの高度な機能などの構成を利用することで、開発者はプログラムの回復力が高く、ユーザーフレンドリーで、予期しないシナリオを適切に処理できることを保証できます。
参考文献:
ミッチェル R (2022 年 6 月 13 日)。カスタム例外。 _Python エッセンシャル トレーニング _[ビデオ]。 LinkedIn ラーニング。 https://www.linkedin.com/learning/python-essential-training-14898805/custom-Exceptions?autoSkip=true&resume=false&u=2245842
Python ソフトウェア財団。 (未確認)。 8.エラーと例外。パイソン。 python.org.
元々は、2024 年 8 月 21 日に「Python の例外処理 - Medium」で公開されました。
以上がPython での例外処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。