繁体   English   中英

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

[英]How to use try catch for function errors in Javascript?

我正在对某些对象进行验证。 该代码通过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);
}

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

var validateObj = window.config.validationRule;

当您遇到不匹配时,您需要“抛出”错误。

throw new Error("Description for mismatch");

您的代码中几乎没有错字。 (例如,使用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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM