非阻止自定义错误

时间:2017-09-26 23:22:57

标签: javascript error-handling

考虑这样的例子:

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次而不是log string,这也是不受欢迎的效果。第二个代码是非阻塞的,但它不再是错误。

编辑: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;
}

2 个答案:

答案 0 :(得分:0)

我通过使用console.error()来修复此问题,用于抛出自定义错误和简单返回;用于阻止执行功能。

答案 1 :(得分:0)

怎么样:

function object(param) {
    if (param == null) {
        console.log(new Error('custom error'));
    }
    return param;
}

您也可以将console.log替换为console.error

你也应该小心javascript的保留关键字Object(带有大写的O)就是其中之一(不是真正的关键词,而是一个非常重要的对象)