Pythonのtryを使いこなそう!基本的な使い方を分かりやすくご紹介
エラー処理は、プログラミングで避けて通れない重要なテーマです。
特にWEBアプリケーションやデータ処理など、外部との連携が多いプログラムでは、適切なエラー処理がなければ、アプリケーションが処理を続行できない事態や、外部のサーバーへの不正なアクセスを招くケースも起こり得ます。
本記事では、Pythonのtry-exceptを使用したエラー処理の基本から応用まで、実践的な例を交えて解説します。
Contents
Pythonのtry-exceptとは?
プログラムを実行中に発生するエラーを適切に処理する仕組みがPythonのtry-exceptです。エラーが発生した際にプログラムの強制終了を防ぎ、安全に処理を継続できます。
例えば、ユーザーからの入力や外部からのデータ取得など、実行時に問題の起きる可能性がある処理をtryブロックで囲み、エラーが発生した場合の対処法をexceptブロックに記述します。
try-exceptを使うと、エラーが発生しても代替処理に切り替えたり、ユーザーにわかりやすいメッセージを表示したりできるため、システムの安定性が向上し、予期せぬエラーでプログラムが停止するのを防げます。
プログラムの信頼性を高めるうえで、try-exceptによるエラー処理は重要な役割を果たします。特にWEBアプリケーションやデータベース処理など、外部との連携が多いプログラムでは欠かせない機能となっています。
Pythonのtryの基本構文
try構文は4つのブロックで構成され、exceptまたはfinallyブロックは必須です。
try
tryブロックには、エラーが発生する可能性のあるコードを記述します。
try:
result = 10 / 0 # ファイルの読み込みや数値の計算など、実行時にエラーが起こりうる処理
except
exceptブロックは、tryブロックで発生したエラーを捕捉して処理します。
種類を指定してエラー(例外)を処理できます。
try:
result = 10 / 0
except ZeroDivisionError: # 0での除算エラーを捕捉
print(“0での除算はできません”)
else
elseブロックは、tryブロックでエラーが発生しなかった場合に実行されます。
正常な処理が完了後の追加の処理を記述するのに適しています。
try:
result = 10 / 2
except ZeroDivisionError:
print(“0での除算はできません”)
else:
print(f”計算結果: {result}“) # エラーがない場合のみ実行
finally
finallyブロックは、エラーの有無に関わらず必ず実行される処理を記述します。
ファイルのクローズやデータベース接続の切断など、後始末として必ず実行したい処理に使用します。
try:
file = open(“data.txt”, “r”)
except FileNotFoundError:
print(“ファイルが見つかりません”)
finally:
file.close() # エラーの有無に関わらずファイルを閉じる
tryの基本的な使い方
tryの基本的な使い方を見ていきましょう。
単純な例外処理
基本的な例外処理は、1つのエラーに対して1つの対処をおこなう方法です。
# 辞書にキーが存在しない場合に、エラーメッセージを表示する例
my_dict = {‘a’: 1, ‘b’: 2}
try:
the_key = input(‘aまたはbを入力: ‘)
print(my_dict[the_key])
except KeyError:
print(f”キー{the_key}は存在しません。”)
複数の例外を処理
プログラムでは、複数の種類のエラーが発生する可能性もあります。
それぞれのエラーに応じて適切な対処をおこなうため、複数のexcept節を用意できます。
try:
num = int(input(‘数字を入力: ‘))
result = 100 / num
except ValueError:
print(‘数値を入力してください’)
except ZeroDivisionError:
print(‘0での除算はできません’)
すべての例外を処理
予期せぬエラーも含めて、発生するすべてのエラーを捕捉したい場合があります。
Exceptionクラスを使うと、あらゆる種類のエラーを処理できます。
try:
# 何らかの処理
process_data()
except Exception as e:
print(f’エラーが発生しました: {e}‘) # エラーの内容を表示
try応用方法と実用例
Pythonのtry文は、ファイル操作やAPIリクエスト、ユーザー入力の処理など、実践的な場面で活用できます。具体的な実装例を見ていきましょう。
ファイル操作のエラー処理
ファイル操作では、以下のようにtry文でエラーを適切に処理できます。
try:
with open(‘data.txt’, ‘r’) as file: # ファイルを開く
content = file.read()
except FileNotFoundError:
print(‘ファイルが見つかりません’)
except PermissionError:
print(‘ファイルにアクセスする権限がありません’)
API通信のエラー処理
APIリクエストでは、通信エラーや応答エラーを適切に処理できます。
import requests # http通信モジュール。別途導入が必要です。
try:
response = requests.get(‘https://randomuser.me/api/?results=1’)
response.raise_for_status() # HTTPエラーを検出
data = response.json()
except requests.RequestException as e: # API通信でHTTPエラーが起きた場合
print(f’APIリクエストエラー: {e}‘)
ユーザー入力の検証処理
ユーザー入力の検証にもtry文が有効です。
def get_user_age():
try:
age = int(input(‘年齢を入力してください: ‘))
if age < 0 or age > 150:
raise ValueError(‘範囲を超えています’)
return age
except ValueError:
print(‘正しい年齢を入力してください’)
独自の例外クラスを使った処理
Exceptionクラスを継承した独自の例外クラスを作って、アプリケーション固有のエラー処理をおこなえます。
class PaymentError(Exception): # Exceptionを継承した独自例外クラス
pass
try:
if balance < amount:
raise PaymentError(‘残高が不足しています’)
process_payment(amount)
except PaymentError as e:
print(f’支払いエラー: {e}‘)
まとめ
ユーザー入力や外部との通信をおこなうようなアプリケーションで、try-exceptを使用すると、予期せぬエラーにも適切に対応できるようになります。
本記事で学んだ内容を参考に、自分のコードにエラー処理を実装してみましょう。