Как использовать try catch для ошибок функций в Javascript? - PullRequest
0 голосов
/ 05 июля 2018

Я делаю проверку для определенных объектов. Этот код проверен определенным ключомN validationRule и validateObj.

Мне нужно реализовать попытку try для записи в журнал при возникновении ошибки и при несоответствии значения.

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 {
  validationKey(keyN);
} catch (e) {
  console.log(e);
}

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вам нужно «выбросить» ошибку, если вы столкнетесь с несоответствием.

throw new Error("Description for mismatch");
0 голосов
/ 05 июля 2018

В вашем коде мало опечаток. (Например, цикл for построен неправильно, используя validateObj вместо valObj, и вы должны дать действительный аргумент своей функции в блоке 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);
}
0 голосов
/ 05 июля 2018

В вашем коде вы используете validateObj вместо valObj. Так что поменяйте как ниже -

var validateObj = window.config.validationRule;
...