Obsługa wyjątków JavaScript

Jaka jest najlepsza technika wychwytywania WSZYSTKICH wyjątków zgłaszanych w JavaScript?

Oczywiście najlepszą techniką jest użycie try ... catch. Ale przy wywołaniach zwrotnych typu ansynchronicznego itd. Może to być trudne.

Znam okno obsługi przeglądarek IE i Gecko.orerror, ale co z Operą i Safari?

Oto kilka przypadków testowych, które chciałbym mieć centralne rozwiązanie do obsługi wyjątków:

// 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);
}

Jeśli myślisz o innych przypadkach testowych, wspomnij o nich. Kilka z tych przypadków wspomina metodę ErrorHandler.handleError. To tylko sugerowana wskazówka podczas używania try ... catch.

questionAnswers(8)

yourAnswerToTheQuestion