Scala (Java) のエラー型の基本をおさらい

↑これは全部 Java のもの。Scala らしくエラーハンドリングするなら、Option
, Either
を使っていればよろしい。

例外の問題点は↑これがわかりやすい。
Scala では Java では使えるチェック例外機能がないこともポイント。

こちらに記載の図がわかりやすい。

Throwable
先ほどの図の通り、全てのエラーを表す型の親クラスになるもの。
Exception
The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch.
catch してハンドリングすることを意図したエラー型。
The class Exception and any subclasses that are not also subclasses of RuntimeException are checked exceptions.
Exception
のサブクラスのうち、RuntimeException
のサブクラスでないものはチェック例外。
(逆にいうと、RuntimeException
はチェック例外でない)
Error
An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.
catch すべきでないエラー。なので、異常事態を表すエラーっぽい。

他の scala が提供するエラー周りのクラスも見ておく。

Throwable
をラップしてくれるやつ。Either と異なり、Throwable
しか扱えず、尚且つ NonFatal
なエラーでないと値として扱えない。
Java の例外を値として使いたい場合に使うと良いらしい。

エラーハンドリングを表す型を提供する object。これは初めて見た(あんま使わないのかな?)。
java.lang.Exception
と直接関係があるわけではないっぽいが、java.lang.Exception
は Throwable
なのでこのユーティリティで扱える対象ではある。

NonFatal.scala
のなかに Fatal なエラーが定義されていた。