Error, Fault, Failure
プログラミングをする上で、Error(エラー), Fault(障害), Failure(故障)という用語がよく出てきます。
この用語はプログラミング言語や文脈によって意味を読み替える必要があるので、自分が必要な範囲でまとめておきます。
情報処理用語(JIS X 0014)
- Error(エラー)
- 計算,観測若しくは測定された値又は状態と,真の,指定され た若しくは理論的に正しい値又は状態との間の相違。
- Fault(障害)
- 要求された機能を遂行する機能単位の能力の,縮退又は喪失を 引き起こす,異常な状態。
- Failure(故障)
- 要求された機能を遂行する,機能単位の能力がなくなること。
Java
- java.lang.Exception
- 通常のアプリケーションでキャッチされる可能性のある状態
- java.lang.Error
- 通常のアプリケーションであればキャッチすべきではない重大な問題
Scala
- scala.util.Success
- 処理を行った結果、例外やエラーが起きなかった
- scala.util.Failure
- 処理を行った結果、例外やエラーが起きた
JISの定義の文脈とプログラミング言語の文脈での意味の違いが業務をする上で問題になることがあります。例えば、JavaでErrorがスローされる状況は情報処理用語の文脈上ではFaultやFailureが起きていることになります。ユーザの入力間違いや重複のチェックなどは情報処理用語の文脈ではErrorですが、JavaやScalaでErrorをスローさせることはないでしょう。