我有一个静态工厂类,如果在调用之前没有进行初始化,它会抛出异常。我不明白为什么 Eclipse 对我大喊大叫,因为我在工厂中抛出了异常(它要求我在 try/catch 中包围抛出异常),但在另一个类中我抛出了 UnsupportedOperationException
,eclipse就可以了。
是否有我不知道的违反规则?
我的静态调用(问题根源):
public static Object createObject() {
if (CONTEXT == null)
throw new InstantiationException("Factory not inited.");
// ...
}
编辑:我意识到这可能更适合作为单例而不是静态类,但问题仍然存在。
最佳答案
您需要查看已检查异常和未检查异常之间的区别。
http://docs.oracle.com/javase/tutorial/essential/exceptions/catchOrDeclare.html
如果抛出的异常是从 RuntimeException 派生的,则它是 Unchecked 的,不需要显式声明/处理。所有其他人都必须如此。
关于java - 为什么异常有时需要用 try/catch 包围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404748/