ExceptionとThrowable、どっちを継承するべきか

こんにちは、saikiです。

開発中、独自にExceptionを定義したいパターンはよくあると思いますが、その時にExceptoionとThrowableどっちを継承するのが正しいのか考える機会があったのでメモっておきます。

独自にExceptionを定義って言ってる時点でExceptionだろって気がしてきましたが実際どうなんでしょうか!お楽しみに!!

Q.アプリ内で定義する独自Exception。継承するならException・Throwableどっち???

アプリ内のエラーをいい感じにハンドリングするためにこういう奴を定義するとします。

今Exceptionになっている部分がThrowableでもかけますし基本的に動作は同じなんですがどっちの方が正しいんでしょうかという話です。

余談ですがSealdクラスって便利ですよね。

A.Exceptionであるべき

どっちがいいとかではなくExceptionじゃないとダメ、と言えそうです。

なんで?

Exceptionを独自にカスタマイズしたものを定義したいんだから普通に考えたらそうだよなあという感じでもあるんですが、一応説明するのであれば

Throwableはその名の通り「Throwすることができる」だけであり例外的な状況を表すわけではなく、例外を表すのは二つのサブクラス、ErrorとExceptionであるから。

といったところでしょうか。

ついでに、Errorはキャッチすべきではない重大な問題を表し、Exceptionはキャッチされる可能性のある問題を表すそうです。

おまけ:ExceptionとRuntimeException

Exceptionはアプリケーションの一般的な例外、RuntimeExceptionはコンパイル時に検出できないコーディング上の例外を表すそうです。

結構なんとなくで使い分けてた。

参考

このページがシンプルでわかりやすく

Javaにおける例外(Exception)の扱い方について

このページがとても詳しいです

 

終わりです。

普段気にしていないことでも調べてみると意外と発見があるものですね。

ではまた。

 

自己紹介
Android開発エンジニアです。
kotlinがお気に入り。

 

おすすめ

Udemyのビデオ講座は本当に捗るので学習にとてもおすすめです。まじで。


スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください