この記事では、Pythonにおける例外処理に焦点を当て、特にPythonコミュニティでよく使われるカスタム例外の例について詳しく説明します。具体的なコード例、その詳細解説、さらには応用例も含めています。
目次
Pythonの例外処理とは
Pythonの例外処理は、プログラムがエラーに遭遇したときに適切な処理を行うための仕組みです。`try`、`except`、`finally`といったキーワードが使われ、エラーハンドリングを効率的に行います。
カスタム例外とその必要性
標準の例外クラスだけでは足りない場合や、特定のビジネスロジックに合わせたエラーハンドリングが必要な場合には、カスタム例外を作成することが推奨されます。
カスタム例外の基本的な作成方法
Pythonでカスタム例外を作るには、基本的には`Exception`クラスを継承します。
# 独自のカスタム例外を作成
class MyCustomException(Exception):
pass
このように`Exception`クラスを継承するだけで独自の例外を作ることができます。
Pythonコミュニティでよく使われるカスタム例外の例
特定の用途やコミュニティの習慣に応じて、以下のようなカスタム例外がしばしば用いられます。
ValidationException
入力値や外部から取得したデータのバリデーションに失敗した場合に投げられる例外です。
class ValidationException(Exception):
def __init__(self, message, errors):
super().__init__(message)
self.errors = errors
NotFoundException
データベースから期待するデータが見つからなかったときなどに使用される例外です。
class NotFoundException(Exception):
pass
応用例
次に、これらのカスタム例外がどのように応用されるか見てみましょう。
応用例1:入力値バリデーション
以下は、`ValidationException`を用いた入力値のバリデーションの例です。
def validate_age(age):
if age < 0:
raise ValidationException("Age cannot be negative", {'age': age})
try:
validate_age(-1)
except ValidationException as e:
print(f"Validation failed: {e}")
応用例2:データベースのレコード検索
`NotFoundException`を用いて、データベースからのレコード検索を行う例です。
def find_record(record_id):
records = {'1': 'record_1', '2': 'record_2'}
if record_id not in records:
raise NotFoundException("Record not found")
try:
find_record('3')
except NotFoundException as e:
print(f"An error occurred: {e}")
まとめ
Pythonのカスタム例外を使うことで、エラーハンドリングがより柔軟に行えます。特定の用途やビジネスロジックに合わせた例外処理をすることで、コードの可読性とメンテナンス性も向上します。
コメント