Qual seria a melhor abordagem para o tratamento de erros no Node?
Opa, estou com uma dúvida sobre qual seria a melhor abordagem para o tratamento de erros n a minha aplicação. Vou expor minha dúvida, como estou resolvendo-a, e como eu acho que poderia ser.
Bem, vamos lá:
Eu tenho uma função inicial a start()
, que espera a resposta de outra função. Escrevi ela desta forma:
async function start() {
try {
if (...) {
...
await read(...);
} else {
throw new Error('(COD001)');
}
} catch (error) {
recordLog(error);
}
}
Já a função read()
(que se encontra em outro arquivo) escrevi desta forma:
async function read(folder, profile) {
try {
const result = await readFolder(folder)
.then(...)
.then(...);
return result;
} catch (error) {
if (error.message.includes('(COD002)')) {
throw error;
} else {
error.message = '(COD003)';
throw error;
}
}
}
Minha intenção aqui era a seguinte, se o erro ocorresse em readFolder()
, eu iria propagar este erro para a função start()
, senão, propagaria o outro erro.
Para fechar, em readFolder()
(que também encontra-se em outro arquivo), eu escrevi assim:
function readFolder(folder) {
return new Promise((resolve, reject) => {
try {
...
resolve(result);
} catch (error) {
error.message = '(COD002)';
reject(error);
}
});
}
Entretanto estou achando esta abordagem confusa, pois eu tenho diversas funções, ou seja, terei que fazer vários ifs para saber onde o erro ocorreu e então propagar este erro para a função start()
.
Bem, penso que poderia existir algo como um "estado de erro global", para capturar o erro em qualquer parte da aplicação e encaminhar este erro diretamente para a função start()
.
Será que existe alguma funcionalidade no Node ou alguma biblioteca que faça isso? Senão, esta abordagem que estou adotando é a mais correta?
Valeu pela ajuda pessoal,
Muito obrigado.
Lucas.