Pythonでカスタム例外を用いたユーザー入力の検証方法

この記事では、Pythonでカスタム例外を用いたユーザー入力の検証について詳しく説明します。具体的なコード例とその解説、さらに応用例を2つ以上含めています。カスタム例外とは何か、それをどう使ってユーザー入力を検証するのか、そしてその応用例について一緒に学びましょう。

目次

カスタム例外とは

カスタム例外とは、プログラマーが定義する独自の例外クラスのことです。Pythonの標準ライブラリでは様々な例外が提供されていますが、特定のビジネスロジックに適した例外を作成する際にカスタム例外が活躍します。

カスタム例外の作り方

カスタム例外を作る際は、`Exception`クラスまたはそのサブクラスを継承して新たなクラスを作成します。


# カスタム例外の定義
class InvalidInputException(Exception):
    pass

ユーザー入力の検証

ユーザーからの入力は、常に信頼できないものとして扱われるべきです。ユーザー入力の検証を行う際には、カスタム例外を用いることで、独自のビジネスロジックに対応した例外処理を実装できます。

基本的な検証例

以下は、ユーザーが入力した数値が10より小さい場合にカスタム例外を発生させる例です。


# ユーザー入力の検証関数
def validate_input(value):
    if value < 10:
        raise InvalidInputException("Input value should be greater than or equal to 10")
try:
    user_input = int(input("Enter a number: "))
    validate_input(user_input)
except InvalidInputException as e:
    print(e)

基本的な検証例の解説

- `validate_input`関数は、引数`value`が10より小さい場合に`InvalidInputException`を発生させます。
- `try-except`ブロックでユーザーからの入力を検証しています。

応用例

文字列の検証

次に、文字列に特定の文字が含まれているかどうかを検証する例です。


# 文字列検証のカスタム例外
class InvalidStringException(Exception):
    pass

# 文字列の検証関数
def validate_string(value, keyword):
    if keyword not in value:
        raise InvalidStringException(f"The keyword '{keyword}' should be in the input")

try:
    user_input = input("Enter a string: ")
    validate_string(user_input, "Python")
except InvalidStringException as e:
    print(e)

メールアドレスの検証

また、正規表現を用いてメールアドレスが正しい形式であるかを検証する例です。


import re

# メール検証のカスタム例外
class InvalidEmailException(Exception):
    pass

# メールの検証関数
def validate_email(email):
    pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
    if not re.match(pattern, email):
        raise InvalidEmailException("Invalid email format")

try:
    user_email = input("Enter your email: ")
    validate_email(user_email)
except InvalidEmailException as e:
    print(e)

まとめ

この記事を通じて、カスタム例外を用いたユーザー入力の検証方法とその応用例について学びました。カスタム例外をうまく活用することで、ロバストで可読性の高いコードを書く一歩になるでしょう。

コメント

コメントする

目次