Вопрос:

Как поймать ENOENT в блюберде?

javascript node.js error-handling promise bluebird

111 просмотра

1 ответ

19185 Репутация автора

Мне нравится ловить ENOENT в bluebird из-за устаревшего fs.exists.

Так, например:

.then(() => {
    return promisedFs.unlinkAsync(excelPath);
})
.catch(ENOENT ERROR, () => { //do something })
.catch(all other errors, () => {//do something})
Автор: jemiloii Источник Размещён: 22.08.2016 09:31

Ответы (1)


3 плюса

413444 Репутация автора

Решение

Из документов :

Отфильтрованный вариант (как обычно в других языках, отличных от JS), который позволяет обрабатывать только определенные ошибки.

[...]

Функции предикатов, которые проверяют только свойства, имеют удобное сокращение. Вместо функции предиката вы можете передать объект, и его свойства будут проверены на соответствие объекту ошибки:

fs.readFileAsync(...)
.then(...)
.catch({code: 'ENOENT'}, function(e) {
    console.log("file not found: " + e.path);
});

Предикат объекта, переданный .catchв приведенном выше коде ( {code: 'ENOENT'}), является сокращением для функции предиката function predicate(e) { return isObject(e) && e.code == 'ENOENT' }, используется свободное равенство IE.

Автор: Bergi Размещён: 22.08.2016 09:42
Вопросы из категории :
32x32