MQTT中终端 Android,消息订阅时使用 IMqttActionListener接口onFailure,接口Java转kotlin出现异常是否有处理方案?java.lang.nullpointerexception: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter exception?
在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。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/