javascript - Musím explicitne zachytávať a znovu hádzať výnimky pri čakaní na asynchrónnu funkciu?
Ak mám
async function bar() {
throw 'bar';
}
Aký je rozdiel medzi
async function foo() {
await bar();
}
a
async function foo() {
try {
await bar();
} catch(e) {
throw e;
}
}
Počul som, že je potrebné explicitne zachytávať a znovu hádzať výnimky vo vnútri asynchrónnych funkcií, ale predpokladal som, že catch(e) { throw e; } je zbytočné (ak sa pred opätovným hodením výnimky nevykonáva žiadne ďalšie spracovanie alebo zaznamenávanie). Verím, že tak je to v niektorých iných jazykoch; ako to je v JavaScripte?
Odpoveď č. 1
Nemusíte chytať a znovu hádzať. Ak je výraz sľubom, ktorý sa odmietne, výraz vyhodí hodnotu odmietnutia.
Zdroj