例外を定数にすると…

例外を定数にすると便利かも…でも、スタックトレースは大丈夫かな…と思ったので、実験。


import java.util.*;

public class Hoge {

private static Exception ERR_CODE = new Exception();

public static void main(String[] args) throws Exception {
try {
throw ERR_CODE;
} catch (Exception e) {
e.printStackTrace();
}

try {
throw ERR_CODE;
} catch (Exception e) {
e.printStackTrace();
}

}
}

で、結果。


java.lang.Exception
at Hoge.(Hoge.java:5)
java.lang.Exception
at Hoge.(Hoge.java:5)
使いまわしはできなくもないけど、スタックトレースの内容が更新されない。
やっぱり、例外はいちいち新しく作るのがよいよう。


ので、定数っぽく使うなら、以下のようなメソッドを定義するのがよいかも。(戻り値が例外って不気味だけど)


public static void ERR001() {
throw new Exception("ERR001");
}

public static Exception ERR001() {
return new Exception("ERR001");
}