Pregunta ¿ENOENT de fs.createReadStream es inapto?


No puedo atrapar ENOENT de fs.createReadStream (). ¿Es esta una función asíncrona, que arroja una excepción en una cadena de cierre diferente?

$ node -v
v0.10.9
$ cat a.js
fs = require('fs')

try  {
  x = fs.createReadStream('foo');
} catch (e) {
  console.log("Caught" );
}

$ node a.js

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: ENOENT, open 'foo'

¡Espero que se imprima 'Caught' en lugar de la pila de errores!


32
2018-06-16 18:49


origen


Respuestas:


fs.createReadStream es asincrónico con el estilo del emisor del evento y no arroja excepciones (que solo tienen sentido para el código síncrono). En cambio, emitirá un evento de error.

var fs = require('fs')

var stream = fs.createReadStream('foo');
stream.on('error', function (error) {console.log("Caught", error);});
stream.on('readable', function () {stream.read();});

44
2018-06-16 19:19