1
0

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.

【Java】例外の種類を見てみる

Last updated at Posted at 2023-05-27

前置き

どのようなプログラムでもそうだが、完璧なプログラムは存在しない。ただし、トラブルが発生したからと言って、ソフトウェアが停止するようなことはあってはならない。トラブルが発生した時、どのように対処すべきかを記述する必要がある。それが、今回説明する例外処理である。

具体的に例外をどのような形で利用するのか

例外処理は以下のように記載する

try{
//例外が発生する可能性がある処理
}catch(例外クラス型 変数){
//例外が発生した時の処理
}finally{
//例外発生の有無にかかわらず実行したい処理
}

例外クラスの種類

IndexOutOfBoundsException

これは存在しない要素にアクセスしようとすると発生する例外クラスである。

import java.util.ArrayList;
import java.util.List;

public class Main{
	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		
		try{
			list.get(0);
		}catch(IndexOutOfBoundsException e) {
			System.out.println(e.getMessage());
		}
	}
}

Index 0 out of bounds for length 0

ArrayIndexOutOfBoundsException

これはIndexOutOfBoundsExceptionと似ているが、存在しない配列の要素にアクセスしようとすると発生する例外クラスである。

public class Main{
	public static void main(String[] args) {
		try {
			int[] array = {};
			array[0] = 10;
			System.out.println("10を代入");
		}catch(ArrayIndexOutOfBoundsException e) {
			System.out.println(e.getMessage());
		}
	}
}

Index 0 out of bounds for length 0

NullPointerException

これは参照型変数にnull値が格納されている時に、参照型変数を参照しようとした場合に発生する例外である。

public class Main{
	public static void main(String[] args) {
		String a = null;
		try{
			System.out.println(a.length());
		}catch(NullPointerException e) {
			System.out.println(e.getMessage());
		}
	}
}

Cannot invoke "String.length()" because "a" is null

ClassCastException

継承関係や実現関係にないクラスにキャストしようとした場合に発生する例外である。
※AクラスとBクラスには継承関係や実現関係にないとする。

public static void main(String[] args) {
		try {
			A a = new A(10);
			B b = new B(10);
			System.out.println(a.equals(b));
		}catch(ClassCastException e) {
			System.out.println(e.getMessage());
		}
}

class test.B cannot be cast to class test.A (test.B and test.A are in unnamed module of loader 'app')

最後に

完璧なプログラムを作成することはほぼ不可能だから、いかに例外処理をうまく使うかが鍵だと感じた。
他にも例外クラスや使い方があるため、今後も学んでいきたい。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?