java - 在java中处理对象的可空性检查

标签 java exception

我在一个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/

相关文章:

java - Eclipse 中的 Maven 插件错误

java - NotifyBuilder 在重复运行时表现不一致

java - 在 Android Studio 中将 JSON 解析为 List [java]

exception - 如何使用 Vstest.console.exe 和 Moq 避免 SerializationException 警告

java - NAO Robotics学生在AMD 64位平台上编译错误: Can't load IA 32-bit . dll

c++ - 未捕获的异常——调试技巧(C++)

java - 如何开始将 Apache solr 与 Java 结合使用并运行简单的查询而不会出错?

java - 从 Xml 数据生成图形的工具

php - 在 __destruct() 中,您如何查看当前是否存在异常?

visual-studio - 使用宏或键盘快捷键切换 "Break when an exception is thrown."