как обрабатывать вложенные ошибки node js

#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
    }
}