我第一次使用错误处理程序。处理程序正在处理我的代码,但是当值不为空时它不应该发出警报。在任何一种情况下我都收到警报。我不知道出了什么问题。
var data = {};
var deviceId = ["asdfa23", "asdfa32"]
data[deviceId] = "asdfasdf";
try {
if(data[deviceId].value == null)
throw "this is null"
}
catch(err) {
alert(err)
}

答案 0 :(得分:1)
只需替换你的if语句:
(data[deviceId].value == null)
by:
(data[deviceId] == null)
你没有value
字段,它不是一个对象。
您可以执行 .some()方法来检查数组上的条件。
var data = {};
var deviceId = "thermoment123";
data[deviceId] = ["er213", "er243"];
for(var device in data){
try{
var bool = data[deviceId].some(function(elm){
return elm
? true
: false
});
if (!bool){
var errorSensor = "The sensor "+ deviceId + " has no data"
throw errorSensor;
}
} catch(err){
alert(err)
}
}
答案 1 :(得分:0)
您将数组分配给data[deviceId]
。
该数组有两个属性0
和1
(以及所有继承的属性,如forEach
和length
)。
value
不是普通数组的属性,您还没有添加。
答案 2 :(得分:0)
您的代码中有几处语法错误:
var data = {};
var deviceId = "thermoment123";
data[deviceId] = ["er213", "er243"];
for (var device in data) {
try {
if (data[deviceId] == null) { //removed the .value
var errorSensor = "The sensor " + data[deviceId] + " has no data"; //added ';'
throw errorSensor;
} //close brackets that start at from if statement
} catch (err) {
alert(err); //added ';'
}
}