【Java】例外


Javaについて、復習しながら更新していきます。
今回のテーマは例外処理!!

例外処理

実行時に発生したエラーを例外と呼び、例外が発生することをスローと呼びます。実行時にエラーが発生すると、例外処理を記述していない場合プログラムが強制終了してしまいます。



[例外の種類]

例外には、例外処理の記述が必須であるchecked例外と例外処理が必須ではないunchecked例外が存在する。



try~catch~finally

try: 例外が発生する可能性のある場所 
catch: 例外が発生した時に行う処理を記述(catchブロックは複数定義できる)
finally: 例外が発生しても必ず実行したい処理を記述


[構文]

try
{
//通常処理
}
catch(例外クラス名 変数名)
{
//例外時に処理したい内容
}
finally
{
//最後に必ず実施する処理
}




[例]
class Test 
{
	public static void main(String[] args) 
	{
		int[] num = {10, 20, 30};
		for (int i = 0; i < 4; i++)
		{
			try 
			{
				System.out.print("num :" + num[i]);
			}
			catch(ArrayIndexOutOfBoundsException aioe)
			{
				//スタックトレースを出力
				System.out.println(aioe.getStackTrace());
			}
			catch(Exception ex)
			{
				//スタックトレースを出力
				System.out.println(ex.getStackTrace());
			}
			finally 
			{
				System.out.println("finally");
			}
		}
	}
}





throws

例外が発生するメソッドにthrowsを指定することで、例外処理を呼び出し元のメソッドへ任せることができます。


[構文]

[修飾子] 戻り値の型 メソッド名(引数リスト) throws 例外クラス名
{
//処理内容
}



[例]
class Test 
{
	//throwsを指定し、例外処理を呼び出し元へ投げる
	void testMethod() throws ArrayIndexOutOfBoundsException
	{
		int[] num = {10, 20, 30};
		for (int i = 0; i < 4; i++) 
		{
			System.out.println("num :" + num[i]);
		}
	}
	//実行メソッド
	public static void main(String[] args) 
	{
		try 
		{
			Test t = new Test();
			t.testMethod();
		}
		catch(ArrayIndexOutOfBoundsException e)
		{
			System.out.println(e.getStackTrace());
		}
	}
}



throw

throwを指定することで明示的に例外を発生させることも可能である。



[構文]

throw 例外オブジェクト;



[例]
class Test 
{
	void testMethod() throws Exception
	{
		//明示的に例外を投げる
		Exception e = new Exception("TestException");
		throw e;
	}
	//実行メソッド
	public static void main(String[] args) 
	{
		try 
		{
			Test t = new Test();
			t.testMethod();
		}
		catch(Exception e)
		{
			System.out.println(e.getStackTrace());
		}
	}
}


以上。



【ブログを始めるなら】

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA