我正在寻找一种解决方案,我可以捕获浏览器控制台中记录的所有错误(已处理/未处理)。
我知道window.onerror
和window.addeventlistener('error', function(){})
。
以上代码仅捕获未处理的错误。我还需要捕获处理错误。
例如:
function foo() {
var x = null;
try {
x.a = "";
} catch (e) {
//Exception will be digested here.
}
var y = null
y.b = "";
}
window.onerror = function() {
//Write logic for the errors logged in console.
}
foo();
在上面的例子中try catch
就在那里,所以我只会为变量y
而不是x
收到错误。
有没有办法监听/捕捉catch
阻止?
由于
答案 0 :(得分:0)
尝试手动调用window.onerror。但是,请重新考虑改变您的方法。这非常脏。
window.onerror = function(msg, url, lineNo, columnNo, error) {
if (error === 'custom') {
console.log("Handled error logged");
return true;
}
console.log("unhandled error")
return false;
};
示例try / catch
var myalert = function() {
try {
console.log(f);
} catch (e) {
window.onerror('test',null,null,null,'custom');
}
console.log("Gets here");
}
答案 1 :(得分:0)
现实情况是,如果发现异常,那么问题就不存在了,因为您的代码知道如何处理它。
在像Java这样的其他编程语言中,总是很好的做法是只捕获你可以处理的异常,并将其他所有内容扔到链上和/或映射到另一个可能更有用的异常。调用堆栈。
例如:
function foo() {
var x = null;
try {
x.a = "";
} catch (e) {
//Exception will be digested here.
console.log("I am writing code here but still don't know how to proceed");
throw new CustomError("Something was wrong");
}
var y = null
y.b = "";
}