我有一个静态的Factory类,如果在调用之前没有init
,则抛出异常。我不明白为什么eclipse因为在工厂中抛出异常(它要求我在try / catch中包围抛出)而对我大吼大叫,但在另一个我抛出UnsupportedOperationException
的类中,eclipse是很好。
是否有规则我不知道我违反了?
我的静态电话(问题来源):
public static Object createObject() {
if (CONTEXT == null)
throw new InstantiationException("Factory not inited.");
// ...
}
编辑:我意识到这可能更适合作为单身而不是静态类,但问题仍然存在。
答案 0 :(得分:12)
您需要查看Checked例外和未经检查的例外之间的区别。
http://docs.oracle.com/javase/tutorial/essential/exceptions/catchOrDeclare.html
如果抛出的异常是从RuntimeException派生的,则它是Unchecked,不需要显式声明/处理。所有其他人必须是。
答案 1 :(得分:1)
UnsupportedOperationException
,但会检查InstantiationException
。不同之处在于,Exception
扩展RuntimeException
,checked and unchecked exceptions扩展{{1}}。
答案 2 :(得分:1)
您应该在方法标题中添加throws子句:
public static Object createObject() throws InstantiationException
在RuntimeException
上,Java doc说
不需要在其throws子句
中声明方法
这就是为什么eclipse在方法声明中没有看到它时不会尖叫。