A hibák hasznos jelzést adnak arról, ha valami hibás vagy váratlan dolog történik egy programban vagy egy kódrészletben.
Ezek JavaScript-objektumok.
Az objektum fő tulajdonsága a message:
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
A throw szintaxissal dobhatsz egy Error-t.
throw new Error('Oops');
Amikor egy hiba eldobódik, a jelenlegi végrehajtás leáll, és onnan a hívási verem első catch blokkjában folytatódik.
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
Ahogy a JavaScript bármely osztályánál, az alosztályok is örökölhetnek az Error-ból, hogy az extends kulcsszóval egyéni hibákat hozzanak létre.
Az instanceof szintaxis eldönti, hogy az elkapott hiba egy adott Error-alosztály példánya-e.
class CustomError extends Error {}
try {
// ... Code that may throw an error
} catch (error) {
if (error instanceof CustomError) {
console.log('The error thrown is an instance of the CustomError');
}
}
Az Error objektum mellett más beépített hibaobjektumok is léteznek. Erről bővebben itt olvashatsz.
Saját egyéni hibatípust is definiálhatsz, ha létrehozol egy osztályt, amely kiterjeszti a beépített hibatípusok egyikét
class MyCustomError extends Error {}
Bár a throw szintaxist általában egy Error objektum dobására használjuk, a JavaScript rugalmas: megengedi, hogy string-et, null-t vagy bármilyen primitív típust dobj.
Bár ez nem szabványos a JavaScriptben, a legtöbb JavaScript-környezet megvalósít egy stack tulajdonságot az Error objektumokon, amellyel megkaphatod az eldobott hiba veremnyomkövetését.