コース一覧
    Pythonエラー・データ形式
    raiseで例外を投げる

    Pythonエラー・データ形式

    例外処理とデータ形式を深め、異なる入力を検証し変換する処理を設計できるようにします。

    1
    エラー処理の設計
    01. 例外の階層15分
    02. raiseで例外を投げる15分
    03. カスタム例外15分
    04. finallyとelse15分
    05. assertで前提を守る15分
    06. つくる 入力検証の例外設計20分
    07. 第5章クイズ10分
    2
    ファイルとデータ形式
    01. csvモジュール15分
    02. JSONで保存15分
    03. JSONを読み込む15分
    04. pathlibでパス操作15分
    05. 文字コード15分
    06. つくる JSON保存へ移行20分
    07. 第6章クイズ10分

    raiseで例外を投げる

    このレッスンでできるようになること。raise を使って自分から異常を通知し、家計簿にマイナスの金額が紛れ込むのを止められるようになります。

    これまでの例外は Python が勝手に起こすものでした。raise を使うと、自分のコードから例外を起こせます。書き方は raise 例外クラス("メッセージ") です。

    Python

    def validate_amount(amount):
        if amount < 0:
            raise ValueError("金額はマイナスにできません")
        return amount

    なぜ return "エラー" ではなく raise なのでしょうか。戻り値でエラーを表すと、呼び出した側が確かめるのを忘れたときに、そのまま先へ進んでしまいます。raise なら止まるので、見落としが起きません。異常は静かに素通りするより、はっきり止まるほうが安全です。

    投げた例外は、どこかで受け止めないとプログラムごと落ちます。検証する関数は投げるだけにして、受け止めるのは呼び出し側の役目にします。こうすると「どこで異常を見つけたか」と「どう扱うか」を分けて書けます。

    Python

    try:
        validate_amount(-80)
    except ValueError as e:
        print("登録できません", e)

    as e と書くと、投げるときに渡したメッセージを str(e) で取り出せます。利用者に見せる文言は自分で決めた文字列にしておくと、Python の版が変わっても表示がぶれません。

    要件

    1. validate_amount は amount がマイナスなら ValueError を投げる
    2. 投げるときのメッセージは 金額はマイナスにできません にする
    3. register は正常なら 品名 を 金額 円で登録しました を返す
    4. register は例外を受け止めて 登録できません メッセージ を返す

    ヒント

    raise ValueError("...") で投げます

    except ValueError as e: と書くと str(e) でメッセージを取り出せます

    register の中で必ず受け止めて、外へは投げません

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • カスタム例外

      Exception を継承した BudgetOverError を定義して使います。

    • finallyとelse

      finally と else で、後始末と正常時の処理を書き分けます。

    • assertで前提を守る

      assert で集計前のデータが壊れていないことを検査します。

    • つくる 入力検証の例外設計

      入力の層で検証して投げ、上位で捕らえる形に整理します。

    main.py
    エディタを読み込んでいます

    メモ

    raiseで例外を投げる

    ⌘S で保存