プログラマーにとって、コードが正しく動作することは非常に重要です。しかし、時にはコードが想定通りに動作しないことがあります。例えば、ユーザーが想定していない値を入力した場合、データベース接続が失敗した場合などです。こうしたエラーが発生すると、プログラムはクラッシュしてしまい、ユーザーにとっても不快な体験となります。そこで、Pythonには「例外処理」という仕組みがあります。
例外処理は、プログラムがエラーを検出した場合に、そのエラーに適切に対処することができるようにする仕組みです。Pythonでは、try文とexcept文を使って例外処理を行います。以下に、基本的な例外処理の書き方を示します。
基本的な例外処理の書き方を示します。
try: # 例外が発生する可能性のあるコード except エラーの種類 as エラーオブジェクト: # エラーが発生した場合に実行されるコード
try文の中には、例外が発生する可能性のあるコードを書きます。例えば、ファイルの読み込みやデータベースへの接続などです。エラーが発生しなければ、try文の中のコードは順番に実行されます。
しかし、エラーが発生すると、Pythonはexcept文にジャンプします。except文では、エラーの種類と、エラーオブジェクトを指定します。エラーオブジェクトは、エラーに関する情報を持っています。例えば、ファイルが存在しない場合には、エラーオブジェクトには「ファイルが存在しない」という情報が含まれます。
以下に、例外処理の例を示します。この例では、ユーザーが数字以外の文字を入力した場合に、エラーメッセージを表示するプログラムです。
while True: try: x = int(input("数字を入力してください: ")) break except ValueError: print("数字以外の文字が入力されました。もう一度入力してください。")
このプログラムでは、input()関数でユーザーからの入力を受け取り、int()関数で数値に変換しています。しかし、ユーザーが数字以外の文字を入力した場合には、ValueErrorというエラーが発生します。この場合、except文が実行され、エラーメッセージが表示されます。そして、while文が継続され、ユーザーが正しい値を入力するまで繰り返されます。
さらに、複数のエラーを処理することもできます。例えば、以下のようなコードでは、ユーザーが存在しないファイル名を指定した場合と、ファイルを読み込めない場合の2つのエラーを処理しています。
import sys file_name = "nonexistent_file.txt" try: with open(file_name, "r") as file: data = file.read() except FileNotFoundError: print(f"ファイル '{file_name}' が見つかりません。") sys.exit() except PermissionError: print(f"ファイル '{file_name}' を開けません。") sys.exit() print(data)
このコードでは、open()関数でファイルを開いています。しかし、指定されたファイルが存在しない場合には、FileNotFoundErrorというエラーが発生します。また、ファイルを開く権限がない場合には、PermissionErrorというエラーが発生します。
このように、try-except文を使うことで、プログラムがクラッシュすることを防ぎ、エラーに適切に対処することができます。ただし、例外処理を使いすぎると、プログラムの動作が遅くなったり、デバッグが難しくなったりすることがあるので、適切な使い方を心がけましょう。
以上が、Pythonの基礎である例外処理の基本についての説明でした。例外処理は、プログラムの信頼性を高めるために欠かせない機能であり、ぜひ活用してみてください。