最近まで知らなかった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(); } }