【プログラム解説】カスタム例外(独自のエラー)を作成し、負の数値が入力された場合に例外を発生させてエラーメッセージを表示する

program
class NegativeValueError(Exception):
    pass

def check_positive(number):
    if number < 0:
        raise NegativeValueError("負の値は許可されていません。")

try:
    num = int(input("正の整数を入力してください: "))
    check_positive(num)
    print(f"入力値: {num}")
except NegativeValueError as e:
    print(f"エラー: {e}")

このプログラムは、カスタム例外(独自のエラー)を作成し、負の数値が入力された場合に例外を発生させてエラーメッセージを表示するというものです。具体的に、Pythonの例外処理機能を使ってエラーを管理する方法を学ぶ例となっています。


コードの説明


1. カスタム例外クラスの定義

class NegativeValueError(Exception):
pass
  • 役割
    • Pythonの組み込み例外クラス Exception を継承して、独自の例外クラスを作成しています。
    • この例外を使って、負の値が入力された場合に発生するエラーを特定できます。
  • pass
    • クラスの中に特別な処理を追加しないため、pass を記述してそのまま空のクラスとして定義しています。

2. 値をチェックする関数の定義

def check_positive(number):
if number < 0:
raise NegativeValueError("負の値は許可されていません。")
  • 役割
    • 引数 number に渡された値が負の数かどうかをチェックする関数です。
    • if number < 0:
      • number が 0 未満(負の値)であれば、次の行を実行します。
    • raise NegativeValueError
      • 条件が満たされた場合に、NegativeValueError 例外を発生させます。
      • 発生させると同時に、エラーメッセージ "負の値は許可されていません。" を指定しています。

3. ユーザー入力と例外処理

try:
num = int(input("正の整数を入力してください: "))
check_positive(num)
print(f"入力値: {num}")
except NegativeValueError as e:
print(f"エラー: {e}")
  • try ブロック
    • エラーが発生する可能性のある処理をこの中に記述します。
    • input()
      • ユーザーに正の整数の入力を求めます。
      • 入力された値は文字列型なので、int() で整数に変換します。
    • check_positive(num)
      • 入力された値が正の数かどうかを check_positive() 関数でチェックします。
      • もし負の数であれば、NegativeValueError が発生します。
  • except NegativeValueError as e:
    • NegativeValueError が発生した場合、このブロックが実行されます。
    • as e
      • 発生した例外オブジェクトを e という変数で受け取り、その詳細な情報を表示します。
    • エラー時の出力
      • エラーメッセージ "負の値は許可されていません。" が表示されます。

プログラムの動作フロー

  1. ユーザー入力
    • ユーザーが整数を入力します(例: -5)。
  2. 値のチェック
    • 入力値が負の場合(例: -5)、NegativeValueError を発生させます。
  3. 例外処理
    • NegativeValueError が発生すると、except ブロックが実行され、エラーメッセージが表示されます。
  4. 正しい入力の場合
    • 入力値が正の場合(例: 10)、check_positive() はエラーを発生させず、そのまま値を表示します。

実行例

正の値を入力した場合

入力:

正の整数を入力してください: 10

出力:

入力値: 10

負の値を入力した場合

入力:

正の整数を入力してください: -5

出力:

エラー: 負の値は許可されていません。

ポイント

  1. カスタム例外の使い方
    • 独自の例外を作ることで、特定のエラー状況をわかりやすく管理できます。
  2. エラーメッセージの明確化
    • ユーザーにどのようなエラーが起きたのか具体的に説明できます。
  3. 安全性
    • 不正な値が入力された場合でもプログラムが強制終了せず、適切に処理を続行します。

コメント

タイトルとURLをコピーしました
//投稿内コードにコピー表示 //コピー表示ここまで