它将看起来像这样(这不是有效的Java代码)
// Not a valid Java Code
static throws SomeCheckedException {
throw new SomeCheckedException();
}
但是在哪里抓广告呢?已检查的异常需要捕获。想象一些可能初始化该类的示例(或者可能不会因为已经初始化该类),并且只是为了引起人们对其引入的复杂性的注意,我将这些示例放在另一个静态初始化器中:
static {
try {
ClassA a = new ClassA();
Class clazz = Class.forName(ClassB.class);
String something = ClassC.SOME_STATIC_FIELD;
} catch (Exception oops) {
// anybody knows which type might occur?
}
}
还有一件令人讨厌的事情-
interface MyInterface {
final static ClassA a = new ClassA();
}
想象一下ClassA的静态初始化程序抛出了一个已检查的异常:在这种情况下,MyInterface(这是一个带有“隐藏”静态初始化程序的接口)将不得不抛出该异常或对其进行处理-接口处的异常处理?最好保持原样。