本ブログにはプロモーションが含まれております。

Java

JavaSilver対策!覚えておきたいExceptionとRuntime Exceptionの違い

スポンサーリンク

こんにちは、まいまいです。

文系Javaエンジニアとして名を馳せるべく、日々会社で働いております。Javaの資格を取る必要があるので、現在はJava Silverの勉強をしています。Java SilverはJavaプログラマの初心者が受けるのに丁度いいレベルの試験なので、もしJavaの勉強を始めたての方は挑戦してみるといいかもしれません!

さて、今回はそんなJava Silverの試験範囲の1つである、ExceptionクラスとRuntime Exceptionクラスについてまとめたいと思います。一緒にSilverの合格を目指しましょう!

Javaの例外処理

例外とは不測の事態のことを指します。不測の事態というと難しく聞こえますが、例えば文字列を処理するプログラムを書いたとします。すると、そもそも何らかの文字列が与えられるのが当たり前と考えますよね。そんな中でnullが渡されてくることは想定外、まさに不測の事態です。そうするとJVMは処理を続けられなくなるので、NullPointExceptionといった例外を出して私達プログラマに気づかせます。

このように、例外とは意図していないことが起こったときに出されるエラーメッセージのようなものになります。もしも例外を人間の言葉に直すと、「えぇ!ちょっと待って!?」という驚きに近いのかもしれません。

ExceptionとRuntime Exception

そんなJavaの例外ですが、ExceptionとRuntime Exceptionに別れます。検査例外と非検査例外という言葉を聞いたことがある方も多いはず。Java Silverでもよく狙われる箇所なので、難しそうと匙を投げずに押さえていきたいポイントです。それでは、ExceptionとRuntime Exceptionの違いを見ていきたいと思います。

検査例外はException

検査例外とは例外が発生した場合に備えることを強制される例外のことです。実行前に前もって「検査」をするイメージです。強制される理由は、どんなにコードを完璧に書いたとしても、検査例外の発生は防げないことがあるためです。

例えば、DBと接続して処理を行うプログラムを書いたとします。あなたは1文字たりともミスのない完璧なコードを記述しました。しかし、コードは完璧でもDB側に異常が起こると、意図した処理は行えませんよね。DBサーバがそもそも存在していなかったり、サーバでエラーが起こったりしていたら、いかにコードが完璧でも対処することができません。これはSQLExceptionの例ですが、このように例外の発生が防げないことがあるため、予め備えることを強制されるのです。

備えというのはtry-catchのことやthrowsのことを指します。

非検査例外はRuntime Exception

反対に、try-catchやthrowsを書くことを強制されない例外を、非検査例外と言います。こちらは防ごうと思えば防げる例外を指します。nullに対してメソッドを呼び出してしまったときに起こるNullPointExceptionや、配列の添字を間違えた際に起こるArrayIndexOutOfBoundsExceptonは、気をつけていたら防げますよね。これらは非検査例外です。先程の検査例外のように、もとよりコード上ではどうしようもない事態に陥ることはありません。

このような非検査例外はtry-catchやthrowsを書くことを強制されません。

ExceptionはRuntime Exceptionを包括している。

ここで注意したいのが、ExceptionクラスはRuntime Exceptionを包括しているという点です。先程、例外は検査例外と非検査例外に分かれると記述し、検査例外はExceptionが、非検査例外はRuntime Exceptionが対応すると記述しましたが、ExceptionはRuntime Exceptionを包括しているので、非検査例外をExceptionクラスで受け取ることも可能です。

・検査例外:Exceptionでcatch
・非検査例外:Runtime ExceptionとExceptionでcatch

といった括りになります。

まとめ

Java Silverで狙われるExceptionとRuntime Exceptionの違いをご紹介しました。これらは例外という大きなくくりにありますが、Exceptionは検査例外を主にcatchし、Runtime Exceptionは非検査例外を主にcatchします。

検査例外はどうしても防げない例外、非検査例外はコードの書き方次第では防げる例外のことを指します。これらの以外を押さえて、Java Silver合格を目指しましょう!最後までお読みいただきありがとうございました。

スポンサーリンク

-Java
-, , ,

© 2024 教職志望だった文系エンジニア Powered by AFFINGER5