こんにちは、AKデザインの中の人です。
普段何気なく使っているものでも、仕組みや背景を知ると見え方が変わることがあります。
今回は「Pythonのtry exceptでエラーに強くする基本」について掘り下げてみます。
Pythonのtry except構文を活用することで、プログラムの信頼性を高めることができます。特に実務においては、エラーを適切に処理することが非常に重要です。
知っているようで意外と説明できない部分もあるテーマですので、基本から順番に整理していきましょう。
\n\n
導入・全体像
Pythonは非常に使いやすい言語ですが、エラー処理を怠ると、思わぬトラブルに見舞われることがあります。エラー処理を強化する手法として、try except構文が非常に有効です。実務では、例えばAPIからのデータ取得やファイル操作時にエラーが発生することがあります。これらの場面でtry exceptを使用することで、プログラムの可読性や信頼性を向上させることができます。
このセクションでは、try exceptがどのようにエラー処理を助けるのか具体的な例を挙げて説明します。例えば、ファイルを開く際に指定したファイルが存在しない場合、通常はプログラムがクラッシュしますが、try exceptを用いることで、そのエラーを捕捉しユーザーに対して適切なメッセージを表示することが可能です。
また、APIからデータを取得する際には、ネットワークの問題やAPIの不調などによるエラーが発生することがあります。これもtry exceptによって処理することで、例外に対して柔軟に対応し、プログラムの継続的な実行を助けることができます。
実務の場面では、try exceptを導入する際に、特定のエラーのみを捕捉するために、複数のexcept句を使い分けることが推奨されます。これにより、発生したエラーに応じた適切な処理を行うことができ、ユーザー体験を向上させることができます。
基本の考え方
try except構文は、エラーが発生する可能性のあるコードを安全に実行するための方法です。基本の構文は以下の通りです。
try:
# エラーが発生する可能性のある処理
except (エラータイプ):
# エラーが発生した際の処理
例として、数値の除算を行うコードを見てみましょう。0での除算を試みるとエラーが発生しますが、try exceptを使うことで、それを回避できます。
def safe_divide(a, b):
try:
return a / b
except ZeroDivisionError:
return "0で除算できません"
このコードでは、bが0のときにエラーメッセージを返すことで、プログラムが異常終了するのを防いでいます。これにより、エラーが出てもプログラムがクラッシュせず、安定した動作を維持できます。
実務での見方や例
実際の業務では、様々な場面でtry exceptを活用することができます。例えば、外部APIからのデータ取得に失敗した場合や、ファイルが存在しないときなどです。これらのエラーを適切に処理することで、プログラムが予期せぬ動作をしないようにすることができます。
ここでは、requestsライブラリを使ったAPIデータ取得の例を見てみましょう。
import requests
def fetch_data(url):
try:
response = requests.get(url)
response.raise_for_status() # ステータスコードがエラーの場合は例外を発生させる
return response.json()
except requests.exceptions.RequestException as e:
return f"データ取得に失敗しました: {e}"
このコードでは、HTTPリクエストのエラーを捕捉し、ユーザーに適切なメッセージを返します。これにより、プログラムの可用性が向上します。
使いどころや注意点
try except構文は非常に便利ですが、適切に使用することが重要です。以下のポイントに注意してください:
- 特定のエラーを処理する: Broadでcatch-allなexceptを使うと、問題の特定が難しくなります。特定のエラータイプを明示する方が良いです。
- 必要最低限の範囲で使う: tryブロックは、実行する可能性がある最小のコードに留め、エラーの起こる範囲を狭くすることが推奨されます。
- ログを残す: エラー処理を行う際は、エラー内容をログに記録しておくことで、後でデバッグや改善がしやすくなります。
以下は、エラーログをスタンダード出力に表示する例です。
import logging
logging.basicConfig(level=logging.ERROR)
def unsafe_function():
try:
result = 10 / 0
except ZeroDivisionError as e:
logging.error(f"エラーが発生しました: {e}")
このようにしておけば、エラーが発生した理由を簡単に追跡できるため、将来の修正に役立ちます。

まとめ
Pythonのtry except構文を用いることで、エラーに強いプログラムを作成することができます。特に実務においては、外部サービスとの連携や、ユーザーからの入力を扱う際に、エラー処理が不可欠です。正しいエラー処理を行うことで、プログラムの信頼性を高め、エラーの影響を最小限に抑えることができます。特に、自分が想定していない操作やデータに対しても柔軟に対応できるプログラム作りを目指しましょう。
