静的初期化ブロックjava.lang.ExceptionInInitializerError
でキャッチされた例外を再スローするために使用します。メッセージと原因の両方で構築することはできないことに気付きました。どちらか一方だけです。
- 正当な理由はありますか?
- チェックされた例外を静的な初期化ブロックからチェックされていない例外として再スローするために、どのような代替案を提案できますか? 例:
java.lang.RuntimeException
メッセージと原因の両方を許可するものとして再スローします。
更新: #2 を明確にし、サンプル コードを追加しました。
public class Sample {
private static final String _FILE_PATH = "blah/blah/blah";
static {
try {
FileReader in = new FileReader(new File(_FILE_PATH));
}
catch (FileNotFoundException e) {
// Option A: Without context message
throw new ExceptionInInitializerError(e);
// Option B: With context message
String msg = String.format("Failed to open file for reading: '%s'", _FILE_PATH);
throw new RuntimeException(msg, e);
}
}
}