[英]Non-blocking custom errors
Consider such example:考虑这样的例子:
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 will block execution of whole script. obj2 将阻止整个脚本的执行。 Is it possible to block execution of only that particular object?是否可以仅阻止该特定对象的执行? If I do this:如果我这样做:
function Object(param) {
if(param == null) console.log(new Error('custom error'));
return param;
}
It will execute console.log 3 times instead of log string once which is also undesired effect.它将执行 3 次 console.log 而不是 log string 一次,这也是不希望的效果。 Second code is non blocking but it's not error anymore.第二个代码是非阻塞的,但它不再是错误了。
EDIT: https://github.com/wisniewski94/sprites.js/blob/master/sprite.js编辑: https : //github.com/wisniewski94/sprites.js/blob/master/sprite.js
rangeErr as an example以 rangeErr 为例
EDIT2: turns out that if you set console.log in variable it will always call that log even without using this variable. EDIT2:事实证明,如果您在变量中设置 console.log,即使不使用此变量,它也会始终调用该日志。
function Object(param) {
var err = console.log(new Error('custom error'))
if(param == null) err;
return param;
}
I fixed this issue by using console.error() for throwing custom errors and simple return;我通过使用 console.error() 抛出自定义错误和简单返回来解决这个问题; for blocking execution of function.用于阻止函数的执行。
What about:关于什么:
function object(param) {
if (param == null) {
console.log(new Error('custom error'));
}
return param;
}
you can replace console.log
with console.error
too您可以替换console.log
与console.error
太
also you should be careful with javascript's reserved keywords Object
(with an uppercase O) is one of them (well not really a keyword but a really important object)你也应该小心 javascript 的保留关键字Object
(带有大写的 O)是其中之一(不是真正的关键字,而是一个非常重要的对象)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.