この記事で学べること
- Scalaで例外クラスを作る方法
- RuntimeExceptionを継承する方法
- コンストラクタを持った例外クラスを作る方法
Scalaで例外クラスを作る方法
例外クラスの継承も普通のクラス同様に extends
すればいい。
class MyException extends RuntimeException
しかし、この例の MyException
は最も単純な例外クラスの作り方である。しかし、コンストラクタがないため、エラーメッセージを持たせる事ができない。あまり実用的とはいえない。
コンストラクタを持った例外クラスを作る方法
先の例にコンストラクタを持たせた実装は、下記のようなコードになる。引数にはデフォルト値をもたせている。場合によって message
を省いたり、 cause
を省いたりすることができる。
class MyException(message :String = null, cause :Throwable = null) extends RuntimeException(message, cause)
使い方1: 引数なしで例外オブジェクトを作る
エラーメッセージが必要ないときは、引数なしで例外オブジェクトを作れる。
new MyException()
使い方2: エラーメッセージを渡して例外オブジェクトを作る
エラーメッセージを渡す場合はこうする:
new MyException("something wrong")
使い方3: エラーメッセージと原因となる例外オブジェクトを渡してオブジェクトを作る
エラーメッセージとcatchした例外オブジェクトを渡して、新たに例外オブジェクトを作る使い方
val cause = new RuntimeException()
new MyException("something wrong", cause)
使い方4: 原因となる例外オブジェクトだけを渡してオブジェクトを作る
エラーメッセージは不要だが、とcatchした例外オブジェクトを渡して、新たに例外オブジェクトを作りたい場合はこう書く:
new MyException(cause = cause)