Pythonの例外を発生させる方法をやさしく解説!raise文の使い方を初心者向けに理解しよう
生徒
「Pythonでエラーを自分で起こすことってできるんですか?」
先生
「できますよ。Pythonでは、raise文を使うと、わざと例外(エラー)を発生させることができます。」
生徒
「エラーって、間違ったときに勝手に出るものじゃないんですか?」
先生
「それが基本ですが、プログラムの安全を守るために、あえてエラーを出す場面も多いんです。仕組みを順番に見ていきましょう。」
1. Pythonの例外処理とraise文とは?
Pythonの例外処理とは、プログラムの実行中に問題が起きたときに、その問題を特別な形で知らせる仕組みです。この問題のことを「例外」と呼びます。例外は、転んだときに鳴る非常ベルのようなもので、「このまま進むと危ないよ」と教えてくれます。
raise文は、その非常ベルを自分で鳴らすための命令です。Pythonの例外処理の中でも、プログラムを書く人が意図的にエラーを発生させたいときに使います。
2. なぜ自分で例外を発生させるのか
初心者の方は「エラーは出ないほうが良い」と思うかもしれません。しかし、何も問題がないふりをして処理を続ける方が、あとで大きなトラブルになることがあります。
たとえば、年齢を入力する場面で、マイナスの数字が入ったらどうでしょうか。現実ではありえない数字なので、その時点でプログラムを止めて知らせる方が安全です。このような場面で、Pythonのraise文が役立ちます。
3. raise文の基本的な書き方
raise文の基本形はとてもシンプルです。「raise 例外の種類」という形で書きます。例外の種類とは、どんな問題が起きたのかを表す名前です。
age = -1
if age < 0:
raise ValueError("年齢は0以上で入力してください")
この例では、年齢が0より小さい場合に、ValueErrorという例外を発生させています。ValueErrorは「値が正しくない」という意味を持つ、Pythonでよく使われる例外です。
ValueError: 年齢は0以上で入力してください
4. 例外のメッセージとは何か
raise文の後ろに書いている文章は、「例外メッセージ」と呼ばれます。これは、人に向けた説明文です。エラーが起きた理由を、日本語でわかりやすく伝える役割があります。
例外メッセージは、注意書きの張り紙のようなものです。内容が具体的であればあるほど、あとから見た人が困りません。
price = 0
if price == 0:
raise ValueError("価格が0円のため、購入できません")
5. よく使われる例外の種類
Pythonには、あらかじめ用意されている例外がたくさんあります。初心者のうちは、代表的なものを覚えるだけで十分です。
たとえば、ValueErrorは「値がおかしい」、TypeErrorは「種類が違う」、IndexErrorは「番号が範囲外」といった意味を持ちます。
text = 123
if not isinstance(text, str):
raise TypeError("文字列を入力してください")
このように、raise文と例外の種類を組み合わせることで、状況に合ったエラーを出せます。
6. raise文はどんな場面で使うのか
raise文は、「これ以上処理を続けてはいけない」と判断したときに使います。無理に続けると、計算結果が間違ったり、データが壊れたりする可能性があります。
たとえば、人数が0人なのに割り算をしようとした場合、そのまま進むのは危険です。
people = 0
if people == 0:
raise ZeroDivisionError("人数が0人のため計算できません")
7. 初心者がつまずきやすいポイント
Pythonの例外処理で初心者が迷いやすいのは、「どこでraiseを書くのか」という点です。基本的には、「おかしい値を見つけた直後」に書くのがコツです。
また、エラー文を英語のままにせず、日本語で具体的に書くことで、自分自身の理解も深まります。raise文は、未来の自分へのメモでもあります。
8. Pythonの例外処理と安全なプログラム
Pythonのraise文を使いこなせるようになると、プログラムの安全性が大きく高まります。問題が起きた瞬間に止まり、理由をはっきり伝えられるからです。
これは、機械に「ここから先は危険区域」と立て札を立てるようなものです。初心者のうちから、例外を発生させる考え方に慣れておくと、後々とても役立ちます。