2011-10-13 9 views
6

Tengo un script node.js y cada vez que ocurre un error, node.js deja de ejecutarse con el error que ocurrió.node.js, detectando errores para que el script no se rompa?

¿Cuál es la forma correcta de comprobar los errores en node.js para que no rompa la secuencia de comandos y haga que node.js se detenga?

+0

¿Soluciona tus errores? Ajustar el código con posibles errores de tiempo de ejecución en los bloques 'try ... catch' ¿Cómo es esto diferente de cualquier otro lenguaje/intérprete? – nrabinowitz

+0

@nrabinowitz ¿Entonces con try catch si ocurre un error, no romperá el script? Y perdona mi falta de conocimiento, muy nuevo en nodejs, por lo que es bueno fuera de mi nivel de comodidad. Tratando de aprenderlo – John

+0

sí, 'try ... catch' en Javascript funciona de la misma manera que en otros idiomas, lo que le permite detectar y tratar los errores en el código de tiempo de ejecución (aunque no ayudará con los errores de tiempo de análisis, por ejemplo, errores de sintaxis) Consulte https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch – nrabinowitz

Respuesta

17

Puede detectar errores de lo contrario no capturadas mediante el establecimiento de los siguientes:

process.on('uncaughtException', function (exception) { 
    // handle or ignore error 
    }); 

Por supuesto, si ejecuta la secuencia de comandos en algo así para siempre o nodo supervisor, cuando la secuencia de comandos "se detiene" se iniciará la copia de seguridad , que podría resolver tu problema

+0

Realmente muy útil ... empezaba a molestarme revisando mis archivos de registro – Carlton

+1

¿Sigue siendo recomendable? ¿Hay efectos secundarios en esto? – Samson

+0

Este método de manejo de errores no se recomienda en el sitio web de Joylet. https://www.joyent.com/developers/node/design/errors – MattSidor

3

Capturar uncaughtException ya no se recomienda.

Se prefieren usar domains. Al usar "uncaughtException" o Dominio, se recomienda encarecidamente reiniciar el proceso después de manejar la excepción.

Para reiniciar automáticamente el proceso, NodeJS proporciona otra biblioteca llamada Cluster que ayuda a gestionar los subprocesos de trabajo.

+1

dominios están oficialmente desaprobados. https://nodejs.org/api/domain.html – MattSidor

Cuestiones relacionadas