例外処理(exception handling)
処理の途中で起きた異常を、呼出し元へ知らせて受け取らせる仕組み。戻り値で返す形と違い、見落としにくい。
もう少し詳しい説明
例外処理は、処理の途中で起きた異常を、呼出し元へ知らせて受け取らせる仕組みです。
戻り値で返す形との違い
| 戻り値で返す | 例外 | |
|---|---|---|
| 知らせ方 | 特別な値(−1 など)を返す | 異常として投げる |
| 呼出し元が無視したら | そのまま進んでしまう | 受け取らなければ上へ伝わり、最後は止まる |
| 正常な処理の見た目 | 判定が混ざって読みにくい | 正常な流れだけを書ける |
見落としにくいところが、例外の持ち味です。 判定を書き忘れると、戻り値の形では誤った値のまま先へ進みます。
流れ
| 段階 | すること |
|---|---|
| 1 | 異常が起きた場所で、例外を作って投げる |
| 2 | 呼出し元が受け取る(捕まえる) |
| 3 | 記録する、利用者に知らせる、別の方法を試す |
| 4 | 受け取る相手がいなければ、さらに上へ伝わる |
例外が持つ情報
| 持つもの | 中身 |
|---|---|
| メッセージ文字列 | 直接的な原因を表す文 |
| ソースファイル名 | どのファイルで起きたか |
| 行番号 | 何行目で起きたか |
| 呼出し履歴 | どの処理からどの処理が呼ばれて、そこに至ったか |
呼出し履歴が、原因をたどる手がかりになります。 どの経路を通って異常に至ったかが分かります。
出す先で内容を分ける
| 出す先 | 見る人 | 出す内容 |
|---|---|---|
| 画面 | 利用者 | 概要と、次に行うべき操作 |
| ログ | 開発担当者 | 詳細情報と呼出し履歴 |
詳細を画面に出すと、内部の作りが外から見えます。 表の名前、ファイルの置き場所、使っているソフトの版などが手がかりになります。
ログに出すときにも、出してはいけないものがあります。
| 出さないもの | 理由 |
|---|---|
| 認証の情報 | ログを見る人の範囲が広い |
| 個人情報 | 本来その情報に触れない人まで見てしまう |
この問題では、開発担当者が運用中のデータを直接見られない決まりになっています。 ログに顧客情報を出すと、その決まりがログ経由で崩れます。
ログ種別
| 種別 | 使いどころ |
|---|---|
| DEBUG | 開発中の細かい記録 |
| INFO | 正常な動きの記録 |
| WARN | すぐ困らないが、気に留めるべきこと |
| ERROR | 処理が続けられなかったこと |
監視は、ログ種別の文字列を見て異常を見つけます。 ERRORが出たら知らせる、という形です。
想定しているか、していないか
| 分類 | 中身 | 扱い |
|---|---|---|
| 想定済みの異常 | 入力の誤り、業務の決まりに反する操作 | その場で利用者に直してもらう |
| 想定外の異常 | プログラムの欠陥、接続の切断 | 処理を中断し、記録して知らせる |
同じ「エラー」でも、扱いが分かれます。 想定済みなら業務を続けられ、想定外なら続けられません。
試験ではこう出る
科目A(旧・午前)では、例外処理の仕組みが問われます。呼出し元へ知らせる、受け取らなければ上へ伝わる、という部分です。
午後や応用情報(情報システム開発)では、出す先による内容の違いが問われます。画面には概要と次の操作、ログには詳細、という切り分けです。
「出力内容を一部変更する」という設問が出ます。画面から詳細情報を外す、という答え方になります。
関連する用語
- オブジェクト指向
- 例外もオブジェクトとして扱う。クラスとインスタンスの考え方が土台になる
- ホワイトボックステストとブラックボックステスト
- 異常の場合も試す必要がある。テストの観点になる
- インシデント管理
- 運用で起きた異常への対応。ログがその材料になる
- SQLインジェクション
- 詳しい誤りの内容を画面に出すと、手がかりを与える
ミニクイズ
利用者の画面に表示するエラーメッセージの内容として、最も適切なものはどれか。
正解は 4番:何が起きたかの概要と、利用者が次に行うべき操作の案内
利用者が必要とするのは、何が起きたかと、次に何をすればよいかです。ソースファイル名や行番号、呼出し履歴、問合せの内容は、内部の作りを外に見せることになり、攻撃の手がかりを与えます。これらは画面ではなくログに出し、開発担当者が見る形にします。出す先によって内容を分ける、という考え方になります。
この分野をまとめて解く → システム開発とユーザーインタフェースのミニテスト(全40問)
最終更新:2026-11-09