Java / 例外 / 標準的な例外

Java / 例外 / 標準的な例外

Java は Exception クラス等を継承して独自例外も作れるが、そんなに複雑である特定仕様でしか使わないのでない限り最初から備わっているモノを使うほうがよいと思う ・・・が、実はそんなに用途に合致した汎用例外というのが少ない。 名前はいい感じなのだがパッケージがある特定用途限定になっていたりとイマイチ使い勝手が悪い

Exception クラス(チェック)

例外の標準的なスーパークラスで基本的に例外はこのクラスのサブクラスとして定義する。 逆に言うならば、このクラス指定でほぼ全例外を catch することができる。

投げる方に使うには雑すぎて、受ける方に使うにはでかすぎるので、使い捨てプログラム以外で直接使うことはほぼ無いと思う。

こいつから派生したクラスは基本的にチェック例外として扱われる。

例外は基本的に

Exception(String message)
Exception(String message, Throwable cause)

のコンストラクタを実装されて(して)いて、素で発生させるならその message を、catch で受けて発生させるならその catch した例外と message をセットしてあげる。 これにより外部へ外部へ原因を伝達していくことができる。

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Exception.html

RuntimeException クラス(非チェック)

非チェック例外の標準的なスーパークラスで基本的に非チェック例外はこのクラスのサブクラスとして定義する。 非チェック例外は Java の文法にチェックを強制されないので、使い方が柔軟になり、記述がスッキリする。 逆にハンドリングを強制できないので、実装に漏れが発生する可能性はある。

こいつが発生するような状況は基本的にプログラム自体が仕様を満たさずぶっ壊れていてこれ以上動作不能という感じ。 プログラマーに対してソースを直せというメッセージな意味が大きい。 プログラマーが想定外、もしくは通常操作であれば発生し得ない場合に用いられているということ。

なので細かいハンドリング使われることは少ない。ということで継承せずそのまま使われることも多い。

IOException(チェック)

主にファイルの入出力時に関する低レベルな例外通知に使えばいいと思われる

java/basic/exception/standard_exception.txt · 最終更新: 2020-10-07 17:03 by ore