ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【java】例外処理と例外クラス

例外処理

https://www.javadrive.jp/start/exception/index1.html

//独自の例外クラスの作成
//Exceptionクラスを継承
class MyException extends Exception {
	
	//引数に渡された文字列をコンストラクタで返す
	public MyException(String s){
		//Exceptionクラスのコンストラクタを使用
		super(s);
		
	}
	
}
public class practice{
	
	public static void div(int a,int b){
		try{
			if(b < 0){
				throw new MyException("マイナス値です。");
			}
			
			//2値の除算を表示
			System.out.println(a/b);
		
		//算術計算のエラーを捕捉
		}catch(ArithmeticException e){
			
			//ArithmeticExceptionのエラーメッセージを表示
			System.err.println(e.getMessage());
			
		//独自例外クラス(MyException)を捕捉
		}catch(MyException e){
			
			//MyExceptionのエラーメッセージを表示
			System.err.println(e.getMessage());
			
		}finally{
			//処理の最後に必ず実行
			System.out.println("~end~");
			
		}
	}
	
    public static void main (String[] args){
    	
    	div(3,0);
    	div(3,-2);
    	
    }
    
}

詳細

参考
http://education.yachinco.net/tips/java/08/2.html
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Throwable.html
例外とは(復習)
プログラムの実行中にエラーが発生することを例外が発生したと言う。
例外処理
エラーの際にエラーメッセージをそのまま表示させたくない時やプログラムの終了以外の動作をさせたい時の指示
例外が起こった原因毎に異なる処理ができる仕組みが用意されている
java.lang.Throwable
すべての例外とエラーのsuperクラス
ErrorとExceptionのサブクラスを持つ
1つのオブジェクトだけが仮想マシンかthrow構文によってスローされる。
チェック例外(検査例外 Exception)
catch節で捕捉し処理するか、throws句を記述するかしないとコンパイルエラーが発生するため、例外発生時の対処をプログラムで強制される例外
非チェック例外(RuntimeException)
例外が発生した場合にcatch節やthrows句で対応してはならない/対応する必要はない例外。スローしなくてもコンパイルエラーは発生しない。
RuntimeExceptionとそのサブクラスが対応している。
ArithmeticException
算術計算で例外が発生した時にthrowされる。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/ArithmeticException.html