プログラムやコードに問題があったり、予期しないことが起こったりしたときは、エラーを報告すると役に立ちます。
エラーはJavaScriptのオブジェクトです。
このオブジェクトの主なプロパティはmessageです。
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
throw構文を使うと、エラーを投げることができます。
throw new Error('Oops');
エラーが投げられると、その時点の実行は中断され、コールスタックの最初のcatchブロックから再開します。
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
JavaScriptの他のクラスと同様に、サブクラスはextendsキーワードを使ってErrorを継承し、独自のエラーを作ることができます。
instanceof構文を使うと、catchしたエラーがErrorの特定のサブクラスのインスタンスかどうかを確認できます。
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');
}
}
Errorオブジェクトのほかにも、組み込みのエラーオブジェクトがいくつかあります。詳しくはこちらで学べます。
組み込みのエラータイプの1つを継承したクラスを作ることで、独自のエラータイプを定義することもできます。
class MyCustomError extends Error {}
throw構文は通常エラーオブジェクトを投げるために使いますが、JavaScriptは柔軟なので、stringやnull、その他のプリミティブ型も投げることができます。
JavaScriptの標準ではありませんが、ほとんどのJavaScript環境ではエラーオブジェクトにstackプロパティが実装されており、投げられたエラーのスタックトレースを取得できます。