【发布时间】:2010-12-24 10:02:15
【问题描述】:
我正面临一个用例,我想声明一个带有初始化语句的static finalfield,该语句被声明为抛出一个检查的异常。通常,它看起来像这样:
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
我在这里遇到的问题是 ObjectName 构造函数可能会抛出各种检查异常,我不在乎(因为我知道我的名字是有效的,如果它不是那么严重崩溃也没关系)。 java编译器不会让我忽略这个(因为它是一个检查异常),我不想诉诸:
public static final ObjectName OBJECT_NAME;
static {
try {
OBJECT_NAME = new ObjectName("foo:type=bar");
} catch (final Exception ex) {
throw new RuntimeException("Failed to create ObjectName instance in static block.", ex);
}
}
因为静态块真的非常难以阅读。有没有人建议如何以一种好的、干净的方式处理这个案例?
【问题讨论】:
-
我个人的解决方案是抛出一个
CheckedExceptionsAreAPainInTheAssSometimesException,这是一个运行时异常。然后程序就会崩溃。
标签: java exception static final initializer