Łapanie wszystkich nieobsługiwanych wyjątków javascript

Próbuję znaleźć lub wymyślić sposób wyświetlania w oknie alertu wszystkich nieobsługiwanych wyjątków javascript w aplikacji. Chciałbym, aby to wszystko zostało wykonane po stronie klienta, bez użycia kodu po stronie serwera. Używam MVC3 jako środowiska.

Badam od kilku dni i nie znalazłem dokładnie tego, czego szukam.

Znalazłem dwa sposoby poniżej, które wydają się być prawie tym, czego szukam, z wyjątkiem tych sposobów, które są skonfigurowane tak, że musisz przekazać nazwę funkcji do niestandardowej metody, aby wydrukować ślad stosu wszystkich nieobsługiwanych wyjątków w tym specyficzna funkcja. Szukam sposobu, aby nie musieć ręcznie przekazywać nazwy funkcji do niestandardowej metody, która wyświetla ślad stosu wszystkich nieobsługiwanych wyjątków. Chciałbym, aby te niestandardowe metody po prostu „nasłuchiwały” wszystkich nieobsługiwanych wyjątków w całej aplikacji.

http://eriwen.com/javascript/js-stack-trace/

Również coś podobnego do poprzedniego linku:

https://github.com/eriwen/javascript-stacktrace

Oto podstawowy kod z drugiego linku powyżej, który drukuje ślad stosu określonej funkcji javascript:

instrumentFunction: function (context, functionName, callback) {
    context = context || window;
    var original = context[functionName];
    context[functionName] = function instrumented() {
        callback.call(this, printStackTrace().slice(4));
        return context[functionName]._instrumented.apply(this, arguments);
    };
    context[functionName]._instrumented = original;
}

function printStackTrace(options) {
    options = options || {
        guess: true
    };
    var ex = options.e || null,
        guess = !! options.guess;
    var p = new printStackTrace.implementation(),
        result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}

Podsumowując, czy wszyscy znacie jakiś sposób „słuchania” nasłuchiwania wszystkich nieobsługiwanych javascript wyjątków, a następnie drukowania ich na ekranie w oknie alertu?

Dzięki! Jason

questionAnswers(4)

yourAnswerToTheQuestion