¿Cómo me aseguro de que todos los errores de JavaScript se escriban en la consola de herramientas de desarrollador de Chrome?

StackOverflow https://stackoverflow.com/questions/9318728

  •  26-10-2019
  •  | 
  •  

Pregunta

Considere la siguiente función de JavaScript:

function triggerError() {
   var something = undefined;
   // The next line will trigger 'TypeError: Cannot call ... of undefined'
   something.doesNotExist();
}

Al correr triggerError(); directamente se escribe el siguiente error en la consola de herramientas de desarrollador de Chrome en rojo, lo cual se espera:

TypeError: Cannot call method 'doesNotExist' of undefined

Sin embargo cuando triggerError(); se está ejecutando de un oyente de eventos No se escriben errores en la consola (la llamada de función simplemente muere en silencio something.doesNotExist();) lo que hace que las cosas sean muy difíciles de depurar en caso de errores tipográficos, etc.

¿Cómo me aseguro de que todos los errores se escriban en la consola de herramientas de desarrollador de Chrome, incluidos los errores generados en el código que se están ejecutando de oyentes de eventos/devoluciones de llamada?

Un obvio activo sería agregar try { ... } catch (x) { console.log(x) }; En todo el lugar, pero como no sé de antemano dónde agregaré errores tipográficos, este no es un camino a seguir.

¿Fue útil?

Solución

¿Podrías mostrar tu muestra, intenté reproducirla en el siguiente fragmento y funciona perfectamente bien para mí:

<script>
function triggerError() {
   var something = undefined;
   // The next line will trigger 'TypeError: Cannot call ... of undefined'
   something.doesNotExist();
}
window.addEventListener("click", triggerError, true);
</script>
<body onclick="triggerError()">
</body>

Otros consejos

Podrías usar un try catch :

function triggerError() {
    try{
        var something = undefined;
        // The next line will trigger 'TypeError: Cannot call ... of undefined'
        something.doesNotExist();
   }catch(ex){
        console.error(ex.message);
   }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top