コース一覧
    Pythonエラー・データ形式
    カスタム例外

    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分

    カスタム例外

    このレッスンでできるようになること。Exception を継承した自分の例外クラスを定義して、家計簿の業務的なエラーを型で表せるようになります。

    ValueError や TypeError は Python が用意した一般的な例外です。ところが家計簿には「予算を超えた」という、Python が知らない事情のエラーがあります。これを ValueError で表すと、金額が読めないエラーと見分けがつきません。

    そこで自分で例外クラスを作ります。Exception を継承した空のクラスを書くだけです。

    Python

    class BudgetOverError(Exception):
        pass

    pass は「中身は何も足しません」という意味です。これだけで、raise BudgetOverError("予算を 2000 円超えています") と投げられますし、except BudgetOverError: で予算超過だけをねらって受け止められます。

    自作の例外を用意すると、受け止める側のコードが読みやすくなります。「予算超過なら警告を出す、入力ミスなら登録し直させる」といった振り分けが、例外クラスの名前だけで表せるからです。エラーの種類を文字列の中身で判定する必要がなくなります。

    名前は末尾を Error で終わらせるのが Python の習わしです。BudgetOverError、InvalidExpenseError のように、何が起きたのかが名前だけで伝わる語を選びます。

    要件

    1. BudgetOverError は Exception を継承する
    2. check_budget は total が budget を超えたら BudgetOverError を投げる
    3. 投げるときのメッセージは 予算を 超過額 円超えています にする
    4. report は例外を受け止めて 警告 メッセージ を返し、正常なら 予算内です 残り 残額 円 を返す

    ヒント

    class BudgetOverError(Exception): の下は pass だけで足ります

    超過額は total - budget です

    report の中で受け止めるので、例外は外へ出ません

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

    関連レッスン

    • finallyとelse

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

    • assertで前提を守る

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

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

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

    • 第5章クイズ

      例外設計の理解を確認します。

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

    メモ

    カスタム例外

    ⌘S で保存