HarmonyOS 鸿蒙Next:这个怎么会报错Object is possibly 'null'

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:这个怎么会报错Object is possibly 'null’

cke_690.png
async insertPasswordItem(pwdData:PwdData):Promise<void> {
const valueBucket: relationalStore.ValuesBucket = {
‘TITLE’ : pwdData.title,
‘ACCOUNT_NAME’ : pwdData.account,
‘PASSWORD’ : pwdData.password,
‘PHONE_NUMBER’ : pwdData.phoneNumber,
‘MAIL’ : pwdData.mail,
‘QUESTION1’ : pwdData.question1,
‘QUESTION2’ : pwdData.question2,
‘QUESTION3’ : pwdData.question3,
‘DATE’ : pwdData.date,
};

if (this.rdbStore!== null) {
try {
return new Promise<void>((resolve, reject) => {

this.rdbStore.insert(DBUtils.TABLE_NAME, valueBucket, (err: BusinessError, rowId: number) => {
if (err) {
console.log(‘往表中添加数据失败,err.code:’ + err.code + ‘,err.name’ + err.name + ‘,err.message:’ + err.message);
reject(err);
} else {
console.log(‘往表中添加数据成功’ + rowId);
resolve();
}
});
});
} catch (error) {
console.error(‘插入操作出现异常:’, error);
}
} else {
console.log(‘rdbStore不存在’);
return Promise.resolve();
}
}


更多关于HarmonyOS 鸿蒙Next:这个怎么会报错Object is possibly 'null'的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

我的理解是你虽然在外面写了if判断,但是对于编译器来说this.rdbStore的调用时机是在匿名回调函数中,它看不到外层的判断,你把判断写到里面试试?

更多关于HarmonyOS 鸿蒙Next:这个怎么会报错Object is possibly 'null'的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


是的,相当于你在函数Promise<void>((resolve, reject)=>{this.rdbStore...}里面直接使用了this.rdbStore.insert而没有判空,所以编译器能够识别出来,改成

Promise<void>((resolve, reject)=>{
    if(this.rdbStore!=null) {...}
}

这样应该就没问题了

在HarmonyOS鸿蒙Next的开发中,遇到“Object is possibly ‘null’”错误通常是因为在代码中使用了可能为null的对象,而编译器或静态分析工具未能确认该对象在使用前已被正确初始化或赋值。

这种错误常见于以下几种情况:

  1. 未初始化的对象:直接使用了未初始化(或未赋值)的对象变量。
  2. 方法返回值:调用了可能返回null的方法,但未进行空值检查。
  3. 集合操作:从集合中取出元素后,未确认元素是否为null就进行使用。

解决方法:

  • 显式检查:在使用对象前,通过if语句检查该对象是否为null。
  • 使用Optional:在Java或类似语言中,可以使用Optional类来封装可能为null的对象,通过Optional提供的方法安全地访问对象。
  • 断言:在开发阶段,可以使用断言(assert)来确保对象不为null,但注意断言在生产环境中会被忽略。
  • 初始化:确保所有对象在使用前都已被正确初始化或赋值。

针对HarmonyOS鸿蒙Next,确保遵循其特有的编程规范和API使用方式,避免直接操作可能为null的对象。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部