В Chrome, когда возникает исключение, он печатает трассировку стека в журнале консоли. Это чрезвычайно полезно, но, к сожалению, в случаях, когда исключение было переброшено, это вызывает проблему.
} catch (e) {
if (foo(e)) {
// handle the exception
} else {
// The stack traces points here
throw e;
}
}
К сожалению, следующий код в jQuery.js
приводит к возникновению этой проблемы во всех исключениях, если они изнутри обработчиков событий.
try {
while( callbacks[ 0 ] ) {
callbacks.shift().apply( context, args );
}
}
// We have to add a catch block for
// IE prior to 8 or else the finally
// block will never get executed
catch (e) {
throw e;
}
finally {
fired = [ context, args ];
firing = 0;
}
Есть ли способ изменить throw e;
, чтобы исключение было переброшено с той же трассировкой стека?