Quando uma Promise falha
Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 20 de 33.
Uma promessa também pode falhar, por exemplo, quando um arquivo não existe. Isso é chamado de rejeição. .catch fornece o código a ser executado em caso de falha. .finally é executado após o sucesso ou a falha, o que é útil para uma mensagem de encerramento.
readFile('weather.txt', 'utf8')
.then((text) => console.log(text))
.catch(() => console.log('No file'))
.finally(() => console.log('Finished'));Quando a leitura falha, seu callback de sucesso é ignorado. O exemplo exibe No file e, em seguida, Finished. A mensagem de falha deve ficar em catch, para que uma leitura bem-sucedida não a exiba.
Desafio
FácilExecute practice.js primeiro: o arquivo ausente causa um erro ENOENT não tratado.
Mantenha o callback de leitura bem-sucedida. Adicione .catch para imprimir No notes yet em caso de falha e, em seguida, .finally para imprimir Done em qualquer um dos resultados. Sem argumentos, as linhas são No notes yet e Done. Experimente note.txt: as linhas são Buy milk e Done.
Experimente você mesmo
import { readFile } from 'node:fs/promises';
readFile(process.argv[2] ?? 'missing.txt', 'utf8').then((text) => console.log(text));
Todas as lições de Fundamentos de Node.js
Pratique por conta própria: Playground de Express