概要

ch01 では try / catch で「飛んできた例外を受け止める」側を扱った。この章では反対側、つまり「自分から例外を投げる」側を学ぶ。書き方は throw new Exception("メッセージ") の 1 行で、これを実行した瞬間にその関数の処理は中断され、呼び出し元の catch まで一気に巻き戻る。

例外の最大の効用は、関数の戻り値を「正常な結果のみ」に絞れる ことだ。たとえば年齢を返す関数が -1 を「エラー」のサインとして返していると、呼び出し側は毎回 -1 チェックを挟むことになる。代わりに「不正なら throw、正常なら数値を return」と決めておけば、戻り値は常に意味のある年齢になり、エラー処理は catch 側に分離できる。

どこで投げ、どこで捕まえるかは設計判断。一般的には 「異常を最初に検知した場所で throw」「対応できるレイヤーで catch」 が定石。たとえば DB アクセス層が SQL エラーを throw し、画面表示層が catch してユーザー向けメッセージに変換する、という形だ。この章のドリルでは「負の数なら throw」という最小例で、投げる側のコードに慣れる。

学習目標

ドリル

no 内容
01 入力が負なら throw、正なら普通に出力する

演習: ドリル 01 — 負の数で throw

問題

標準入力から整数を 1 行読み込みます。

try / catch で受け止め、catch ブロックでは "NG: 負の数です" を 1 行出力してください。

入力例 (tests/input.txt)

-3

期待される出力 (tests/expected.txt)

NG: 負の数です

ヒント

この章を AI に聞く

  1. 「ch02 — throw で例外を投げる」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch02 — throw で例外を投げる」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch02 — throw で例外を投げる」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch02 — throw で例外を投げる」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE