最近まで知らなかったJavaのExceptionとErrorの違い

しっかりとリファレンス(Errorクラス)に書かれていました。

あまり気にしてなかったんですが、クラス分けされてるだけあって全然違うものだったんですね・・・

Error は Throwable のサブクラスで、通常のアプリケーションであればキャッチすべきではない重大な問題を示します。そうしたエラーの大部分は異常な状態です。

catchすべきではない重要なエラーはErrorで、try~catchやthrowsで処理するべき事柄はExceptionという様にきっちりと分かれているようです。

なので、下のようなコードはJavaで書くことは出来るけど推奨はされないみたい。(StackOverflowErrorは名前が表すとおりErrorに含まれるので)

知らなかったなぁ・・・

public class StackOverFlow {
	public static void main(String args[]){
		try{
			recursive();
		}catch(StackOverflowError e){
			System.out.println("スタックオーバーフローだよ");
		}
	}
	private static void recursive() {
		recursive();
	}
}