An exception (including reject
) thrown by a promise will not be caught by a nesting try
block, due to the asynchronous
nature of execution. Instead, use catch
method of Promise
or wrap it inside await
expression.
This rule reports try-catch
statements containing nothing else but call(s) to a function returning a Promise
(thus it’s
less likely that catch
is intended to catch something else than Promise
rejection).
Noncompliant Code Example
function runPromise() {
return Promise.reject("rejection reason");
}
function foo() {
try { // Noncompliant, the catch clause of the 'try' will not be executed for the code inside promise
runPromise();
} catch (e) {
console.log("Failed to run promise", e);
}
}
Compliant Solution
function foo() {
runPromise().catch(e => console.log("Failed to run promise", e));
}
// or
async function foo() {
try {
await runPromise();
} catch (e) {
console.log("Failed to run promise", e);
}
}