Каков наилучший метод для ловли ВСЕХ исключений, брошенных в 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.