Bueno, no s茅 si te pas贸 antes, pero si ocurre una excepci贸n no manejada, corta el proceso 馃槢
Por ejemplo: tenemos nuestro WebServer genial corriendo en NodeJS y algo se nos pas贸, algo que no esperabamos o alguna libreria explot贸 鈥 chau server, se cae el proceso de NodeJS y por lo tanto nuestro WebServer muere con el :(

Eso no suena nada bien 鈥

Fuera de que el try y el catch son nuestros amigos, cometemos errores y hay situaciones en las que se nos pasa, y tampoco podemos garantizar los catcheos de excepciones de todas las librerias que usamos.

Entonces, cual ser铆a el nivel m谩s alto para poner un try catch?: el objeto global process 鈥 ah铆 es cuando aparece un gran y maravilloso 鈥渢ry catch鈥 para el proceso que nos puede 鈥済arantizar鈥 (notese las comillas :P) que no se caiga al momento de explotar en mil colores:

process.on("uncaughtException", function (err) { 
  console.log('Seee vol贸 en mil pedazos, pero el proceso sigue arriba');
  console.log('Exception: ' + err.stack);
});

Nos suscribimos al evento 鈥渦ncaughtException鈥 del process y a partir de ahi nos queda logear o hacer lo que creamos necesario al momento de una explosi贸n no calculada.

Documentaci贸n de Node para Process Event Uncaughtexception

Librer铆as interesantes

Pero eso no es todo: como dije antes nos 鈥済arantiza鈥, pero entre comillas. Para estar completamente seguros tenemos alguna librerias:

Nodemon
Para ambiente de desarrollo, Nodemon vigila los archivos y si alguno se modifica re inicia le proceso
Forever
Una herramienta para asegurarnos que nuestro proceso corra por siempre, si cae vuelve arriba (se pueden configurar la cantidad de intentos y tambien usarlo dentro de la app NodeJS)
Node Supervisor
Basicamente hace lo mismo que las dos anteriores. Por linea de comando seteamos par谩metros para vigilar, re-start onError, etc.
LearnBoost: Up
Otra opcion piola de parte de LearnBoost

Yo no prob茅 ninguna y estoy con ganas de arrancar, usaste alguna de esas?, otra?