开发者社区 > 云原生 > 消息队列 > 正文

MQTT中终端 Android,消息订阅时使用 IMqttActionListener接口?

MQTT中终端 Android,消息订阅时使用 IMqttActionListener接口onFailure,接口Java转kotlin出现异常是否有处理方案?java.lang.nullpointerexception: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter exception?

展开
收起
cuicuicuic 2023-05-23 19:53:06 105 0
1 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在Java代码转换为Kotlin代码的过程中,有些接口的参数需要添加@NonNull注解,以告诉Kotlin编译器该参数不可为空,否则在使用该参数时,会出现NullPointerException异常。

    针对此异常,可以检查代码中是否存在可能为空的参数,在参数使用前加上非空检查符号"!!",即对该参数进行强制非空检查,如果该参数为空,则会抛出NullPointerException。例如:

    override fun onFailure(asyncActionToken: IMqttToken?, exception: Throwable?) {
        if (exception != null) {
            Log.d(TAG, "onFailure: ${exception.message}")
        }
    }
    

    在这个方法中,参数exception可能为空,因此需要在使用之前添加非空检查符号"!!",如下所示:

    override fun onFailure(asyncActionToken: IMqttToken?, exception: Throwable?) {
        if (exception != null) {
            Log.d(TAG, "onFailure: ${exception.message!!}")
        }
    }
    

    这样,在调用exception.message时,即使该值为空,也会抛出异常,防止出现NullPointerException。

    2023-05-23 23:07:45
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载