<一覧に戻る

Pythonで例外を自分で発生させるraiseの使い方

プログラミングでは、「予期しない入力や不正な値が渡されたとき」 に、あえてエラーを発生させたい場面があります。
例えば、ユーザーがマイナスの年齢を入力したときや、存在しないファイルを指定したときなどです。

Pythonでは、raiseキーワードを使うことで、自分で例外を発生させることができます。
これにより、プログラムが「これはおかしい」と判断したときに、適切に処理を止めたり、エラーメッセージを返したりできるようになります。

基本構文

raise 例外クラス("エラーメッセージ")

ここで指定する「例外クラス」には、ValueError や TypeError といったPython標準の例外クラスを使うことが多いです。
エラーメッセージは自由に書くことができ、後でデバッグするときの助けになります。

サンプルコード:年齢の入力チェック

次に、年齢を引数として受け取り、もし不正な値が入力された場合に例外を発生させる例を見てみましょう。

def check_age(age):
    if age < 0:
        raise ValueError("年齢は0以上で入力してください。")
    else:
        print(f"年齢は {age} 歳です。")

# 正しい値を渡した場合
check_age(25)

# 不正な値を渡した場合
check_age(-5)

この check_age 関数では、引数として渡された age をチェックしています。 もし年齢が0未満、つまりマイナスの値だった場合には、raise ValueError("年齢は0以上で入力してください。") が実行され、強制的にエラーが発生します。

一方で、引数が正しい値(例えば25)の場合には、そのまま「年齢は25歳です。」と出力されます。

実行すると次のような結果になります。

年齢は 25 歳です。
ValueError: 年齢は0以上で入力してください。

ここでわかるように、マイナスの値を渡すと ValueError が発生し、エラーメッセージが表示されます。

try-exceptと組み合わせる

自分で例外を発生させた場合でも、もちろん try-except を使ってエラーをキャッチできます。
これにより、ユーザーに優しいエラーメッセージを表示することも可能です。

def check_age(age):
    if age < 0:
        raise ValueError("年齢は0以上で入力してください。")
    else:
        print(f"年齢は {age} 歳です。")

try:
    check_age(-3)
except ValueError as e:
    print(f"入力エラー: {e}")

このコードでは、check_age(-3) を実行すると本来はエラーで止まりますが、except でキャッチしているため、次のように表示されます。

入力エラー: 年齢は0以上で入力してください。

このように try-except を使うことで、プログラムを止めずにエラーを処理できるため、ユーザーにとってわかりやすいメッセージを返せます。 実際の開発でも、この仕組みを利用することでより安全で安定したコードを書くことができます。

まとめ

今回学習した内容を以下にまとめます。

  • raise を使うと、自分で意図的に例外を発生させることができる。
  • 不正な値や想定外の入力を受け取ったときに利用すると、プログラムの安全性が高まる。
  • try-except と組み合わせれば、ユーザーにわかりやすいエラーメッセージを返せる。

初心者のうちは、入力チェックや関数の条件分岐に raise を使う練習をすると理解が深まります。
「おかしいと思ったらエラーを投げる」という発想を持つことで、より堅牢で読みやすいコードが書けるようになります。

このトピックの他のセクション:

  1. Pythonの例外処理とは?
  2. エラーの種類と対処法(ValueError、IndexError)
  3. finally節によるリソースの解放
  4. エラーの特定とデバッグ方法
  5. Pythonで例外を自分で発生させるraiseの使い方(現在表示中)

出力結果: