Вы можете написать функцию, которая обернет ваши настоящие обработчики в try / catch
function tc(func, msg) {
msg = msg || "Handler exception";
return function(e) {
try {
return func(e);
}
catch (exc) {
$.post( /* send exception to server? */ );
throw exc; // let nature take its course
}
};
}
(Возможно, вы захотите стать более искусным с обработкой аргументов и т. Д.) Затем, когда вы связываете обработчики, вы делаете:
$('#whatever').click(tc(function(e) {
// your handler function
}, "This is the message sent to the server when this handler fails"));
Кроме того, если вы хотите убедиться, что "this
" в обработчике ведет себя как прежде, вы можете сделать func.apply($(this), e)
вместо func(e)
.