En Javascript, supongamos que quiero para realizar alguna tarea de limpieza cuando una excepción que pase, ¡pero la excepción continúan propagando la pila, por ejemplo:¿Cómo puedo volver a lanzar una excepción en Javascript, pero conservar la pila?
try {
enterAwesomeMode();
doRiskyStuff(); // might throw an exception
} catch (e) {
leaveAwesomeMode();
throw e;
}
doMoreStuff();
leaveAwesomeMode();
El problema con este código es que la captura y Regeneración de las causas de excepción la información de seguimiento de la pila hasta ese punto se perderá, de modo que si la excepción se vuelve a capturar posteriormente, más arriba en la pila, el seguimiento de la pila solo desciende al reenvío. Esto apesta porque significa que no contiene la función que arrojó la excepción.
Como resultado, intente ... finalmente tiene el mismo comportamiento, al menos en Chrome (es decir, no es el re-lanzamiento el problema exacto, sino la presencia de cualquier bloque controlador de excepciones).)
¿Alguien sabe de una manera de volver a lanzar una excepción en Javascript, pero conserva el seguimiento de pila asociado a ella? En su defecto, ¿qué hay de sugerencias para otras formas de agregar manejadores de limpieza seguros para excepciones, mientras que también captura rastros de pila completos cuando ocurre una excepción?
Gracias por cualquier punteros :)
0x3a28213a - esperando mi agradecimiento ;-) – bacar
Dupe: https://stackoverflow.com/questions/5249960/javascript-rethrowing-an-exception-preserving-the-stack-trace – MatthewMartin
Esta pregunta debería estar cerrada porque se refiere a un error de Chrome corregido en 2012. –