考虑这样的例子:非阻塞自定义错误
function Object(param) {
if(param == null) throw new Error('custom error');
return param;
}
var obj1 = new Object(1);
var obj2 = new Object();
var obj3 = new Object(3);
OBJ2,将阻止整个脚本的执行。是否可以阻止只执行该特定对象?如果我这样做:
function Object(param) {
if(param == null) console.log(new Error('custom error'));
return param;
}
它将执行console.log 3次而不是日志字符串一次,这也是不希望的效果。第二个代码是非阻塞的,但它不再是错误的。
编辑:https://github.com/wisniewski94/sprites.js/blob/master/sprite.js
rangeErr作为一个例子
EDIT2:事实证明,如果你在变量中设置的console.log它将始终调用日志即使不使用这个变量。
function Object(param) {
var err = console.log(new Error('custom error'))
if(param == null) err;
return param;
}
如果你抛出一个错误。赶上错误。您捕获错误的位置定义了程序逻辑以及执行的内容和不执行的内容。 –
_它会执行console.log 3次而不是日志字符串一次,这也是不希望的结果._这不应该发生在您向我们显示的代码中!它只应该按照预期记录一次 –
至于“这不再是错误”,如果你想在控制台中显示某些错误,可以使用'console.error'。 –