2024年1月26日こんにちは!Javaを書いていると避けては通れないのが例外です。自分で作成した例外クラスのことです。何が便利なの?独自例外ってそもそも何?実際にどうやって実装するの?などさまざまな疑問があると思います。独自例外に入る前に少しだけ例外について復習しましょう!まずJavaの例外には検査例外と非検査例外の二種類があります。検査例外はコンパイル時に見つかる例外なのでソースコード上で処理文を記述しないとコンパイルに失敗しエラーとなります。Exception)でコンパイル時には発見されません。そのためプログラムを実行して初めて例外が見つかるためバグの原因になりやすいです。try~catchブロック例外が発生する可能性があるコードをtryブロックで囲みます。そのtryブロックで例外が発生した場合の処理をcatchブロックに記述します。catchなどで処理を書いておかないとコンパイル時にエラーとなります。finallyブロック例外の発生有無に関わらず必ず実行されるコードはfinallyブロックに記述します。try~catchと一緒に使うことが多いです。この記事ではJavaの例外の種類とその処理の方法を説明します。Javaでのプログラミングでは例外処理は避けられないのでしっかり理解しましょう。【Javaの...独自例外クラスを作るでは本題の独自例外クラスについて説明します!まずはどのように記述するのかをみていきましょう。他のコンストラクタやメソッド}この例ではMyCustomExceptionという例外のクラスを自作しています。独自例外クラスを作成する際にはExceptionクラスかそのサブクラスを継承する必要があります。extendsキーワードでExceptionクラスを継承しています。サブクラスってなんだっけ?という人のために少し解説します!Exceptionクラスは全ての検査例外のスーパークラスです。(こちらを参考)なのでこのクラスを継承すれば検査例外全てを継承したことになります。Exceptionクラスを継承するとコードをパッとみただけではどんな例外が発生するのかわかりにくいです。サブクラスである、SQLExceptionやNullPointerExceptionを継承してコードの可読性を上げることができます。}サンプルコードのこの部分はコンストラクタを定義しています。このコンストラクタはString型のmessageを受け取るようにしています。super(message)でこのコンストラクタが受け取ったString型のmessageの内容を親クラスであるExceptionクラスに渡しています。することでExceptionクラスの機能を用いて、このmessageの内容を表示したりできるようになります。作成した独自例外を使うでは自作した例外クラスをどのように使うか説明します!ここもまずはサンプルコードから見ていきましょう。e.printStackTrace();}みてわかるように使い方は他の例外と同じです!例外が発生する可能性があるコードをtryブロックで囲み、その中で例外をthrowします。この際自作した例外クラスが引数を受け取る場合はきちんと記述しましょう。今回はString型の引数を受け取るように独自例外クラスを作成したので文字列を渡しています。catchブロック内に例外が発生した際の処理を記述します。printStacktrace()はスタックトレースと引数で受け取った文字列を表示するメソッドです。このあたりは普通の例外と同じです!応用例ここから少しだけ難しい内容を解説します。ここまでで十分と思った方も流し見するだけでいいので目を通していただきたいです!こんなこともできるんだ程度に頭の片隅に置いておくだけでもこの先役に立つことがあると思います。例外チェイン例外チェインとは、ある例外が他の例外の原因となる場合に使用される機能です。Javaではある例外が他の例外を引き起こすことがあります。その時に原因となる例外の情報を引き起こされる例外に引き継ぐことで処理を簡単に書くことができるのが例外チェインです。説明だけ聞いてもよくわからないと思うので少し例を出しながら説明します。次のようなコードで考えます。e);}この例ではIOExceptionが発生した際に、それが自作のMyCustomExceptionの原因となる場合を考えています。することで自作の例外クラスの中でIOExceptionの例外処理についても自由に記述することができ、コードの管理がしやすくなります。これが例外チェインの考え方です。まとめ今回はJavaの独自例外についての疑問を解決してきました。この記事ではJavaの参考書をレベル別にまとめます。全て実際に使った人の声や口コミもあるので自分に合いそうな参考書を選んで学習してください!私も人にプログラミン...NoteではJavaの学習方法もまとめています。そちらもぜひご覧ください!Javaの学習方法をチェックするtenjiprogramming20代エンジニア。メインで使用している言語はJava/JavaScript/TyoeScript/react/C言語AWSなどクラウド周りも経験あり。楽しいをモットーに記事を書いています。Noteではサンプルコード付きのゲームの作り方など様々な内容を公開しています。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。プログラミングtenjiprogramming20代エンジニア。メインで使用している言語はJava/JavaScript/react/C言語などAWSなどクラウド周りも経験あり。楽しいを大事に記事を書いています。