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