错误处理程序适用于所有情况

时间:2015-08-13 13:27:54

标签: javascript

我第一次使用错误处理程序。处理程序正在处理我的代码,但是当值不为空时它不应该发出警报。在任何一种情况下我都收到警报。我不知道出了什么问题。



var data = {};
var deviceId = ["asdfa23", "asdfa32"]
    data[deviceId] = "asdfasdf";

try {
  if(data[deviceId].value == null) 
    throw "this is null" 
}
catch(err) {
  alert(err)
}




3 个答案:

答案 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]

该数组有两个属性01(以及所有继承的属性,如forEachlength)。

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 ';'
    }
}