考慮這樣的例子:非阻塞自定義錯誤
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'。 –