捕获JavaScript中引发的所有异常的最佳技术是什么?
显然,最好的技术是使用try ... catch。但是,使用异步回调等,可能会变得棘手。
我知道IE和Gecko浏览器都支持window.onerror,但是Opera和Safari呢?
这是我想拥有集中式异常处理解决方案的一堆测试用例:
// ErrorHandler-Test1
var test = null;
test.arg = 5;
// ErrorHandler-Test2
throw (new Error("Hello"));
// ErrorHandler-Test3
throw "Hello again";
// ErrorHandler-Test4
throw {
myMessage: "stuff",
customProperty: 5,
anArray: [1, 2, 3]
};
// ErrorHandler-Test5
try {
var test2 = null;
test2.arg = 5;
} catch(e) {
ErrorHandler.handleError(e);
}
// ErrorHandler-Test6
try {
throw (new Error("Goodbye"));
} catch(e) {
ErrorHandler.handleError(e);
}
// ErrorHandler-Test7
try {
throw "Goodbye again";
} catch(e) {
ErrorHandler.handleError(e);
}
// ErrorHandler-Test8
try {
throw {
myMessage: "stuff",
customProperty: 5,
anArray: [1, 2, 3]
};
} catch(e) {
ErrorHandler.handleError(e);
}
如果您想到其他测试用例,请提及它们。这些情况中有几种提到了ErrorHandler.handleError方法。这只是使用try ... catch时的建议准则。