我在一个java类中有下面的方法,我正在创建 session ,现在我的编辑器给我一个错误,由于我创建的 session 的被调用方法的返回值,可能会在com.config.CassandraConfig.session()中取消引用空指针,为了克服这个错误,我必须抛出一个新的非法参数异常,请让我知道它是否是正确的方法
@Bean
@Override
public CassandraSessionFactoryBean session() {
// *** Warning Possible null pointer dereference in com.config.CassandraConfig.session() due to return value of called method ****//
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
//*** ****//
session.setCluster(Objects.requireNonNull(cluster().getObject()));
}
我已经按以下方式修复了
@Bean
@Override
public CassandraSessionFactoryBean session() {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
if (session == null) {
throw new IllegalArgumentException("session is null inside CassandraSessionFactoryBean method");
}
session.setCluster(Objects.requireNonNull(cluster().getObject()));
}
最佳答案
您可以执行以下操作:
@Override
public CassandraSessionFactoryBean session() throws AnyOwnException {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
if (session != null) {
session.setCluster(Objects.requireNonNull(cluster().getObject()));
//do somthing else
}
throw new AnyOwnException("session is null inside CassandraSessionFactoryBean method");
}
您可以创建自己的异常并抛出它来处理服务中的错误。
还有更简单的方法:
@Override
public CassandraSessionFactoryBean session() throws Exception {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
session.setCluster(Objects.requireNonNull(cluster().getObject()));
}
关于java - 在java中处理对象的可空性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57583485/