Ferdinand: Promises: .then() reagiert anders als async await! :O

Beitrag lesen

Bin bei Promises gerade über eine interessante Eigenheit gestoßen...

Hab mir Gedanken gemacht, was passiert, wenn bei einem fetch Call z.b. ein Netzwerkfehler oder ein Syntax Error (oder was auch immer) nicht zu einem "regulären" REJECT führt. Im Sinne von

const einPromise = () => {
	return new Promise((res, rej) => {
		throw new Error("OHMAGEE, an error occurred!");
	});
};

In einem try catch Block muss ich diesen Fall extra auffangen, da ich sonst einen uncaught Error produziere:


try {
	einPromise().then(res => console.log(res)).catch(err => console.log("AAAND THE ERROR IS: ", err)); // catch for thrown error
} catch(err) { // catch for regular reject (rej)
	console.log("AAAND THE REJECT CATCH IS: ", err);
}

Dies ist aber nicht der Fall, wenn ich mit async await arbeite:

async function asyncAwaitApproach() {
	try { // hier wird der Error an den catch Block weitergeleitet, ich produziere KEINEN uncaught error!
		const res = await einPromise();
		console.log(res);
	} catch(err) {
		console.log("AAAND THE REJECT CATCH IS: ", err);
	}
}
asyncAwaitApproach();

Gibt's dazu irgendwelche Theorien?

Wer sich nun denkt "Na und, was soll das?" --- sorry, finde das eben interessant 😉

AUSSERDEM... vielleicht ist das dem/r ein oder anderen auch noch nie aufgefallen 😝

Schönen Abend,

Ferdinand.