为什么Exceptions有时只需要在try/catch中包围?

aho*_*der 2 java exception

我有一个静态的Factory类,如果init在调用之前没有ed ,则抛出异常.我不明白为什么eclipse因为在工厂中抛出异常(它要求我在try/catch中包围抛出)而对我大吼大叫,但在另一个我抛出的类中UnsupportedOperationException,eclipse就好了.

是否有规则我不知道我违反了?

我的静态电话(问题来源):

public static Object createObject() {
    if (CONTEXT == null)
        throw new InstantiationException("Factory not inited.");
    // ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:我意识到这可能更适合作为单身而不是静态类,但问题仍然存在.

rfe*_*eak 12

您需要查看Checked exception和Unchecked exception之间的区别.

http://docs.oracle.com/javase/tutorial/essential/exceptions/catchOrDeclare.html

如果抛出的异常是从RuntimeException派生的,则它是Unchecked,不需要显式声明/处理.所有其他人必须.