wul*_*pro 1 java exception-handling exception
NullPointerException在这种情况下是否使用推荐:
/**
* Drop the database referenced by the singleton.
*
* @throws NullPointerException
*/
public static void dropDatabase() throws NullPointerException {
if (store != null) {
store.dropDatabase(DATABASE);
} else {
throw new NullPointerException("No valid database connection.");
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
嗯,这是一个非常毫无意义的代码,你仍然会得到一个NullPointerException无条件调用的代码store.dropDatabase.你不会得到相同的消息,但堆栈跟踪会使它非常清楚.
在这种情况下,我会说它应该是一个IllegalStateException:
表示在非法或不适当的时间调用了方法.换句话说,Java环境或Java应用程序未处于所请求操作的适当状态.
听起来和我的情况完全一样.我还做了检查第一,就像这样:
if (store == null)
{
throw new IllegalStateException("No valid database connection.");
}
store.dropDatabase(DATABASE);
Run Code Online (Sandbox Code Playgroud)
这样你就可以在方法开始时获得所有前提条件,然后专注于主体.
使用番石榴,我只需将其更改为:
Preconditions.checkState(store != null, "No valid database connection.");
store.dropDatabase(DATABASE);
Run Code Online (Sandbox Code Playgroud)