JAVA プログラミング 入門

JAVAのプログラミングについて初歩から解説します。まずは、mainメソッド、変数、演算、if文、for文、while文、メソッド、配列など。続いて、メソッドを複数構成して、プログラムを作成(非オブジェクト指向プログラミング)、しばらく後になると思いますが、オブジェクト指向プログラミングを解説します。 クラスの構成、コンストラクター、継承、・・・、など、本格的OOP(Object Oriented Programming)を解説します。

Java: 例外処理1

例外とは、エラーのような状態である。例えば、ゼロで除算を行う場合、配列の範囲を超えてアクセスした場合などである。このような場合、プログラムを止めないで、特別の処理をすると都合がよい場合がある。

今回はその例外を扱う。
ゼロによる除算を例とする。ゼロで割ることはできないないので、エラー状態になることが予想される(ArithmeticException: / by zeroの例外)。

図Proo8_1_srcはその例外が起こるプログラムである。

f:id:Kurokawa_Tomio:20190702110207p:plain
図Proo8_1_src
実行すると、11,12行で示されるようなメッセージが出てプログラムは止まる。このままでも、ゼロによる割り算であるから、やむを得ないと分かり、そのようなことのないように対処できる。例えば、bをゼロとしないなど。

しかし、JAVAには例外に対して特別に対処する方法がある。図Proo8_2_srcはtry-catch-finallyという方法で対処している。

f:id:Kurokawa_Tomio:20190702110323p:plain
図Proo8_2_src

この方法は例外が起こりそうな部分をtryブロックで囲み、例外が起きたときシステムから送られくる例外オブジェクトを受け取る例外参照変数(ae)を用意しておき、その後の処理をcatchブロックに書いておく。そのようにすれば、どのような例外が起こったのかが分かり、更に例外が発生した直後にプログラムを止めてしまわないで、必要な処理ができる。finallyブロックはなくてもよい。書いておくと例外が起きても、起きなくてもそのブロックは処理される。try-catch-finally構造は以下のように書く。

try{
 例外が起きる可能性がある部分
}
catch(例外参照変数の型 例外参照変数){
 例外が起きたときの処理
}
finally{
 例外の有無にかかわらず実行される処理
}

JAVA PROGRAMMING 入門 TOP へ

以下にソースを二つ示す。

/* 例外処理             */
class Proo8_1 {
	public static void main(String[] args){
		int a=5,b=0,c=100;
		System.out.println("a="+a+" b="+b+" c="+c);
		c=a/b;
	}
}
/*
a=5 b=0 c=100
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Proo8_1.main(Proo8_1.java:6)
*/
/* 例外処理             */
class Proo8_2 {
	public static void main(String[] args){
		int a=5,b=0,c=100;
		try{
			System.out.println("a="+a+" b="+b+" c="+c);
			c=a/b;
		}
		catch(ArithmeticException ae){
			System.out.println(ae+"の例外が発生しました");
			System.out.println("a="+a+" b="+b+" c="+c);
		}
		finally{
			System.out.println("例外のあるないに関わらずfinallyは処理される");
		}
	}
}
/*
a=5 b=0 c=100
java.lang.ArithmeticException: / by zeroの例外が発生しました
a=5 b=0 c=100
*/