我用来在静态初始化块java.lang.ExceptionInInitializerError
中重新抛出捕获的异常。我注意到不可能同时使用消息和原因进行构建。只有一个或另一个。
- 有充分的理由吗?
- 您可以建议哪些替代方法将已检查的异常作为静态 init 块中的未检查异常重新抛出?例如:Rethrow as
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);
}
}
}