Python で例外を処理する方法 (Try-Except-Finally)
try、excel、else、finally ブロックを使用して Python で例外を処理する方法を学びます。エラーがなく、クラッシュ耐性のある Python コードを作成します。
概要
堅牢なソフトウェアは、ファイルの欠落、無効なユーザー入力、データベース障害、ネットワークの中断などの予期せぬ状況に対処できるように準備する必要があります。 Python でエラーが発生すると、例外が発生します。処理されないままにしておくと、例外によってプログラムが直ちに停止され、トレースバック スタックが出力されます。
実行時エラーを管理するための Python の主なツールは、`try-excel` ブロックです。エラーを発生させる可能性のあるコードを「try」ブロック内に配置し、エラー処理コードを 1 つ以上の「Except」ブロック内に定義します。すべての汎用例外 (「例外:」) をキャッチするとバグを隠すことができるため、正確な例外クラス (「ValueError」や「ZeroDivisionError」など) を指定することを強くお勧めします。
例外フローをより表現力豊かにするために、Python には 2 つの追加ブロック、`else` と `finally` が用意されています。 「else」ブロックは、「try」ブロックで例外が発生しなかった場合にのみ実行されます。これは、成功した場合にのみ実行する必要があるコードに役立ちます。 「finally」ブロックは、例外が発生したかどうかに関係なく*常に*実行されるため、ファイルやデータベース接続を閉じるなどのクリーンアップに最適な場所になります。
コードと実行の出力
このスクリプトは、try、excel、else、finally を使用した Python での堅牢なエラー処理を示します。
def divide_numbers(a, b):
try:
# Code that might raise an exception
result = a / b
except ZeroDivisionError:
# Handling a specific exception
print("Error: Cannot divide by zero!")
except TypeError:
# Handling another exception type
print("Error: Inputs must be numbers!")
else:
# Run only if try block succeeded
print(f"Success! Result of {a}/{b} is {result}")
finally:
# Runs no matter what
print("Division attempt completed.")
divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.段階的な実装
- 失敗する可能性のあるコードは try ブロック内に配置します。
- 例外 ExceptionType: ブロックを使用して特定のエラー タイプをキャッチし、失敗を適切に処理します。
- try ブロックが成功した場合にのみ実行する必要があるコードには、else を使用します。
- エラーに関係なくクリーンアップ アクションが実行されることを保証するには、finally を使用します。
よくある質問
単一の例外ブロックで複数の例外をキャッチできますか?
はい、タプルとして渡すことができます: (ValueError, TypeError) を e: として除きます。
独自の例外を発生させるにはどうすればよいですか?
raise キーワードの後に例外インスタンスを指定します: raise ValueError("Invalidconfigurationvalue")。
関連トピック
Python で int() 関数を使用して文字列を整数に変換する方法を学びます。エラーを安全に処理し、数値を 2 進数、8 進数、または 16 進数から変換します。
Python でファイルを読み取る方法Python でファイルを読み取る方法を学びます。 with open ステートメント、readline、readlines、およびファイル例外の安全な処理をマスターします。
Python でファイルに書き込む方法Python でファイルにテキストを書き込む方法を学びます。安全なコンテキスト マネージャーを使用して、書き込み (「w」) モードと追加 (「a」) モードの違いをマスターします。
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python ループ
Python ループを使用してデータを反復処理する方法を学びます。インタラクティブな例を使用して、for ループ、while ループ、ブレーク、継続、ループのベスト プラクティスをマスターします。
Python 文字列メソッドのチートシート
Python 文字列操作の完全なリファレンス ガイド。文字列プロパティの書式設定、検索、分割、置換、チェックをマスターします。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。