如何使用try catch捕获Javascript中的函数错误?

时间:2018-07-05 19:15:38

标签: javascript function try-catch

我正在对某些对象进行验证。该代码通过validationRule和validateObj的keyN进行了特定的验证。

我需要实现一个try catch,以便在出现错误和值不匹配时进行记录。

function validationKey(keyN) {
  var valObj = window.config.validationRule;
  if (typeof(validateObj[keyN]) != 'undifined') {
    for (i = 0; i < validateObj[keyN].validationTypes[i] {
        switch (validateObj[keyN].validationTypes[i]) {
          case (dataType):
            if (typeof(_dl[keyN]) == validateObj[keyN].exceptionDataType) {
              console.log(keyN + "..value matched");
            } else {
              console.log(keyN + "..is not matched");
            }

            break;

          case ('length'):
            if (_dl[keyN].length != validateObj[keyN].exceptionLength) {
              console.log(keyN + "..value matched");
            } else {
              console.log(keyN + "..is not matched");
            }

            break;
          default:
            console.log(_dl[keyN] + "..not validated as no rule defined");

        }
      }
    }
    else {
      console.log("No validation Object available");

    }

我使用了如下的try-catch。它没有任何输出

try {
  validationKey(keyN);
} catch (e) {
  console.log(e);
}

3 个答案:

答案 0 :(得分:0)

在您的代码中,您使用的是validateObj而不是valObj。因此,如下所示进行更改-

var validateObj = window.config.validationRule;

答案 1 :(得分:0)

遇到不匹配时,您需要“引发”错误。

throw new Error("Description for mismatch");

答案 2 :(得分:0)

您的代码中几乎没有错字。 (例如,使用validateObj而不是valObj构造的for循环不是很好,您应该在try-catch块中为函数提供有效的参数。)尝试以下操作:

function validationKey(keyN) {
var valObj = window.config.validationRule;
  if (typeof valObj[keyN] != 'undifined') {
    for (i = 0; i < valObj[keyN].validationTypes[i]; i++) {
      switch (valObj[keyN].validationTypes[i]) {
        case dataType:
          if (typeof _dl[keyN] == validateObj[keyN].exceptionDataType) {
            console.log(keyN + '..value matched');
          } else {
            console.log(keyN + '..is not matched');
          }

        break;

        case 'length':
          if (_dl[keyN].length != validateObj[keyN].exceptionLength) {
            console.log(keyN + '..value matched');
          } else {
            console.log(keyN + '..is not matched');
          }

          break;
          default:
            console.log(_dl[keyN] + '..not validated as no rule defined');
        }
      }
    } else {
      console.log('No validation Object available');
    }
  }  

try {
  validationKey('1');
} catch (e) {
  console.log(e.message);
}