エラーの分類
本質的に必要とされる全情報
エラーの発生時刻(タイミング)(いつ)
エラーの発生場所(どこで)
エラーの発生原因(なぜ)
エラーの発生要因となる各種情報
エラーの対処方法(どうしたらよいのか)
エラーにどの意味を持たせるか?
場所
ソース内の順序、またはシリアル発行されたID
処理名、関数名
理由
状態
エラーの時間的影響範囲
一時的
後で実行したら成功する可能性がある。時間を置いて繰り返しても構わない。
恒久的
常に失敗するものとして処理すべき。二度と繰り返すな。
最も原始的なエラー
成功(非エラー。完了。エラーではないが区別できる状態として必要)
失敗(エラー。未完。)
意味を付随させたエラー
不明
原因がわからない。本来これは返ってくるべきではないが、状態がはっきりしないまま関数などをうっかり脱出してしまったときなど返ってくるのが望ましい。
内部状態の不整合
あり得ない場所に到達した。
あり得ないデータに遭遇した。
再実行の可否、または要否
機能としての状態
機能非存在(Not implemented)
不正パラメータ(Invalid parameter)
不正な要求(Invalid Request)
手順、プロトコルの不正
特性非サポート(Not supported)
サービス外(Out of service)
メンテナンスなどで機能を止めるようなケースがある
拒否(Deny)
詳細な原因は示されないが、拒否された。
準備できていない(Not ready)
準備中(Preparing)(Not ready と分ける必要性はなさそう)
実行中、処理中(Running, In progress)
中断(一時中断、Suspend, サスペンド)
割り込み(Interrupted)
中止(Abort, アボート)
タイムアウト(Timed out)
期待する時間内に終わらなかった
一般的な状態
存在
期待と異なるものの存在
非存在(Not found)
削除された(Removed, Deleted)
破棄された(Disposed)
不正データ(Invalid data)
内部状態の不整合は内部データが起因だが、不正データは外部データが起因。
不正な設定
不正な書式
既にその状態(Already the state)
エラーというより情報だが、あまり必要ではない情報かもしれない。
範囲外(Out of range)
大きすぎる。多すぎる。(Too big, Too many)
小さすぎる。少なすぎる。(Too little, Too few)
空(Empy)
満杯(Full)
始端(Start of data)
終端(End of data)
使用中(In use)
実行中とは分ける。主にリソース向け
認証系
認証なし(No authentication)
認証の失効(Not valid)
既に失効している(Has expired)
まだ有効ではない(Not yet valid)
認証の有効期間外だと、まだ有効期間に入っていない(not yet valid)のと、すでに有効期間が過ぎている(has expired)の2通りがある。
認可なし(No permit)
特定のカテゴリ
データベース
通信、ネットワーク
ストレージ
メモリ
フェーズ
ユーザーの入力ミス
設定ミス
設定内容に間違いがあるなどのエラー
構成ミス
あるはずのファイルがないなどのエラー