検索

キーワード


【Java】自作の例外を作るには?作成方法を解説

  • 公開日:2021-01-26 08:21:20
  • 最終更新日:2021-01-26 08:19:46
【Java】自作の例外を作るには?作成方法を解説

こんにちは、駆け出しエンジニアの伊藤です。

東京ITカレッジのJava研修で学んだ内容を復習も兼ねて記事にしたいと思います。

今回は、Javaの独自例外クラスについて解説していきます。

Javaやプログラムについて勉強し始めた方の参考になれば幸いです!

(eclipseを使用して計算を行っています)

また、この記事に関して、例外の概要や try-catch、マルチキャッチ等について知っている方を対象としています。

関連記事にて、例外の概要や try-catch について詳しく解説していますので、理解を深めたい方はご一読ください。


関連記事:【Java】例外クラスの概要や使用実例を解説 ‐Exception、RuntimeException、Errorなど

     【Java】例外クラスの制御方法 3種類の基本と使い方を解説‐try-catch、try-catch-finally、マルチキャッチ など)

     【Java】例外制御、例外の活用方法入門  - throws、throw、printStackTrace()、getMessage()、getCause() など

     【Java】例外構文 3種類の活用方法解説‐try - with - resources 構文



標準の例外クラスと独自例外クラスの作成

Javaの標準APIには、多くの例外クラス(IOExceptionクラス、ArrayIndexOutOfBonudsExceptionクラスなど)が用意されています。

そのお陰で例外クラスを使って、簡単に例外を発生させることが出来るのです。


またJavaでは、標準APIに用意された例外クラス以外に、独自で例外クラスを作ることが出来ます。


独自例外クラスを作る際には、既存の例外クラスを継承します。

検査例外としたい場合には、Exceptionクラスもしくは、そのサブクラスを継承します。

非検査例外とした場合には、RuntimeExceptionクラスもしくは、そのサブクラスを継承します。

また、独自に作った例外クラスを継承することもできます。



関連記事:【Java】例外クラスの概要や使用実例を解説 ‐検査例外・非検査例外





独自例外クラスの作成方法(プログラムサンプル)

簡単な独自例外を発生させるサンプルプログラムを見てみましょう。


サンプルプログラムは、対応していないファイルが指定されたことを想定してあります。

 1 // NotSupportedFileException ‐ オリジナル例外定義
 2 package exception.gaiyou;
 3
 4 // 検査例外(Exception)を継承
 5 public class NotSupportedFileException extends Exception{
 6     // 警告を回避するための宣言
 7     private static final long serialVersionUID = 1L;
 8     //エラーメッセージを受け取るコンストラクタ
 9     public NotSupportedFileException(String msg) {
10         super(msg);
11     }
12 }


 1 //NotSupportedFile サンプル
 2 package exception.gaiyou;
 3
 4 public class NotSupportedFile {
 5     public static void main(String[] args) {
 6         System.out.println("-----実行結果-----");
 7         try {
 8             // わざと独自例外を発生させる
 9             throw new NotSupportedFileException("対応していないファイルです");
10         } catch (Exception e) {
11             e.printStackTrace();
12         }
13     }
14 }


-----実行結果-----
exception.gaiyou.NotSupportedFileException: 対応していないファイルです
	at exception.gaiyou.NotSupportedFile.main(NotFile.java:9)


独自例外クラスである NotSupportedFileException は、Exceptionクラスを継承しているため、発生する例外は検査例外となります。

継承元を RuntimeException(非検査例外)や IOException、NullPointerExceptionなどのクラスにすることもできます。

作っているプログラム、システムに合わせ選ぶことが大切です。



関連記事:【Java】例外クラスの概要や使用実例を解説 ‐検査例外・非検査例外

     【Java】例外クラスの制御方法 3種類の基本と使い方を解説‐try-catch、try-catch-finally、マルチキャッチ など

     コンストラクタについて



まとめ

独自例外について、分かったでしょうか?

検査例外、非検査例外など例外処理の基本が分かっていれば難しいものではないです。

ぜひ、他の例外についての記事にも目を通してみてください。

関連記事:【Java】例外クラスの概要や使用実例を解説 ‐Exception、RuntimeException、Errorなど

     【Java】例外クラスの制御方法 3種類の基本と使い方を解説‐try-catch、try-catch-finally、マルチキャッチ など)

     【Java】例外制御、例外の活用方法入門  - throws、throw、printStackTrace()、getMessage()、getCause() など

     【Java】例外構文 3種類の活用方法解説‐try - with - resources 構文


【著者】

伊藤

Javaを研修で3か月学んだ、駆け出しのエンジニアです。
現在は、ベンダー資格を取得するため、勉強を日課にできるよう努力中です。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様