非阻塞自定义错误
问题描述:
考虑这样的例子:非阻塞自定义错误
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.error()抛出自定义错误和简单的返回来解决了这个问题;用于阻止功能的执行。
答
什么:
function object(param) {
if (param == null) {
console.log(new Error('custom error'));
}
return param;
}
可以取代console.log
与console.error
太
你也应该与JavaScript的保留关键字Object
小心(用大写字母O)就是其中之一(当然不是一个真正的关键字,但一个非常重要的对象)
如果你抛出一个错误。赶上错误。您捕获错误的位置定义了程序逻辑以及执行的内容和不执行的内容。 –
_它会执行console.log 3次而不是日志字符串一次,这也是不希望的结果._这不应该发生在您向我们显示的代码中!它只应该按照预期记录一次 –
至于“这不再是错误”,如果你想在控制台中显示某些错误,可以使用'console.error'。 –