1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

例外について要点まとめ

Last updated at Posted at 2023-01-10

目次

 1.例外の種類
 2.例外の継承関係

1. 例外の種類

例外とは、Throwableクラスのサブクラスのオブジェクトのことを指す。
Throwableクラスのサブクラスとして、Errorクラス、Exceptionクラスが存在している。

◆ Errorクラス

 プログラムが実行できないなどの重大な例外を扱うため、例外処理は通常おこなわない。
 例 IOError:重大な入出力エラー発生時にスロー

◆ Exceptionクラス

 クラス名の末尾に必ずExceptionが付く。
 RuntimeExceptionクラスに属するクラスと、
 それ以外のExceptionクラスに属するクラスとに分類される。

 RuntimeExceptionクラスに属するクラスは「非チェック例外クラス」と呼ばれ、
 例外処理をおこなわなくてもコンパールエラーにならない。
 例 NullPointerException    :null値の参照型変数を参照しようとした場合にスロー
   IndexOutOfBoundsException:配列やリストのサイズがが範囲外である場合にスロー
   NumberFormatException  :数字でない文字列やnullなど、
                   不適切な文字列を数値に変換した場合にスロー

 それ以外のExceptionクラスに属するクラスは「チェック例外クラス」と呼ばれ、
 例外処理をおこなわなければコンパイルエラーになるので、必ず例外処理をおこなう必要がある。
 例 IOException        :入力処理が何らかの原因で失敗した場合や、
                 割り込みが発生した場合にスロー
   ClassNotFoundException:指定されたクラスが見つからない場合にスロー
   FileNotFoundException :指定されたパス名のファイルが開けない場合、
                 またはファイルが見つからない場合にスロー

※ 参考用(図)
  Throwableクラス
    ∟ Errorクラス
        ∟ IOErrorクラス

    ∟ Exceptionクラス
        ∟ RuntimeExceptionクラス(非チェック例外クラス)
           ∟ NullPointerException
           ∟ IndexOutOfBoundsException
           ∟ NumberFormatException

        ∟ RuntimeException以外のExceptionクラス(チェック例外クラス)
           ∟ IOException
           ∟ ClassNotFoundException
           ∟ FileNotFoundException

2. 例外の継承関係

たとえば何かしらの例外が発生したとき処理をおこないたい場合は、
catchブロックにExceptionクラスを記載するだけで、
下位クラスの例外をキャッチすることができる。

package jp.co.study.sample;

public class Qiita {
	public static void main (String args[]) {
		
		String str1 = "おさかな";
		
		try {
		    Double.parseDouble(str1);
		    System.out.println(str1 + ":この文字列は数字です");
		    
		} catch (Exception e) {
		    System.out.println("何らかの例外が発生しました");
		}
	}
}

出力結果は「何らかの例外が発生しました」

例外の種類によって処理を分けたい場合は、
catchブロックに特定のExceptionクラスを記載する必要がある。

package jp.co.study.sample;

public class Qiita {
	public static void main (String args[]) {
		
		String str1 = "おさかな";
		
		try {
		    Double.parseDouble(str1);
		    System.out.println(str1 + ":この文字列は数字です");
		    
		} catch (NumberFormatException e) {
		    System.out.println(str1 + ":この文字列は数字ではありません");
		}
	}
}

出力結果は「おさかな:この文字列は数字ではありません」

関連記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?