この記事では、Pythonでのカスタム例外の利用シーンとその具体的な例について解説します。カスタム例外を使う理由、基本的な書き方、そして応用例を3つ以上紹介します。
目次
なぜカスタム例外が必要なのか
Pythonには多くの組み込み例外がありますが、特定のビジネスロジックやシナリオに対応するためには、カスタム例外を作成することがあります。これにより、エラーメッセージが明確になり、デバッグ作業が効率的に行えます。
カスタム例外の基本的な作り方
継承を利用する
Pythonでカスタム例外を作成する際の基本は、既存の例外クラスを継承することです。
class MyCustomError(Exception):
pass
上記の例では、`Exception`クラスを継承して`MyCustomError`という新しい例外クラスを作成しています。
エラーメッセージをカスタマイズする
エラーメッセージは、`__init__`メソッドをオーバーライドすることでカスタマイズできます。
class MyCustomErrorWithMessage(Exception):
def __init__(self, message="エラーが発生しました"):
self.message = message
super().__init__(self.message)
応用例
ファイル処理での利用
カスタム例外を使って、ファイルが存在しない場合に特定のエラーメッセージを表示する例です。
class FileNotExistError(Exception):
pass
try:
filename = "nonexistent_file.txt"
with open(filename, "r") as f:
content = f.read()
except FileNotFoundError:
raise FileNotExistError(f"{filename} が存在しません")
API呼び出しでの利用
APIからのレスポンスが期待したものでない場合に、カスタム例外を投げる例です。
class InvalidAPIResponse(Exception):
pass
import requests
try:
response = requests.get("https://api.example.com/data")
if response.status_code != 200:
raise InvalidAPIResponse(f"Invalid status code: {response.status_code}")
except InvalidAPIResponse as e:
print(e)
データベース処理での利用
データベースに接続できない場合にカスタム例外を投げる例です。
class DatabaseConnectionError(Exception):
pass
import sqlite3
try:
conn = sqlite3.connect("nonexistent_db.db")
except sqlite3.OperationalError:
raise DatabaseConnectionError("データベースに接続できません")
まとめ
カスタム例外は、特定の状況やビジネスロジックに対応した例外処理を行うために非常に役立ちます。この記事で紹介した基本的な書き方と応用例を参考に、エラーハンドリングをより効率的に行いましょう。
コメント