#node.js #error-handling #async-await #promise #try-catch
Вопрос:
Это всего лишь пример кода моего кода
async function thisThrows() {
throw new Error("Thrown from thisThrows()");
}
async function run() {
try {
await thisThrows();
} catch (e) {
throw new Error(e)
}
}
async function run1() {
try{
await run()
}catch(e){
throw new Error(e);
}
}
run1().catch(error => {
console.log(error);
});
следующий фрагмент кода выдает мне вложенный вывод ошибок
, т. е. Ошибка: Ошибка: Ошибка
Error: Error: Error: Thrown from thisThrows()
at run1 (/Users/saunish/servify/sandbox/error-handling.js:18:15)
мне нужно, чтобы вывод был
Error: Thrown from thisThrows()
Ответ №1:
Это происходит потому, что вы улавливаете ошибки, а затем создаете новые и выбрасываете новые вместо исходной ошибки.
Все функции на самом деле должны переосмыслить исходную ошибку, например:
async function run() {
try {
await thisThrows();
} catch (e) {
throw e // just rethrow the original
}
}