Node.js でエラーをスローする
今日の投稿では、Node.js でエラーをスローする方法を説明します。
Node.js でエラーをスローする
エラーは、システムが適切に動作することを許可しないステートメントです。
Node.Js のエラーは、throw
キーワードを使用して作成される例外を通じて処理されます。 これは、ユーザーがカスタム例外を作成するのに役立ちます。
JavaScript コードのこの行が実行されるとすぐに、プログラムの通常の流れが停止し、制御は最も近い例外ハンドラーに保持されます。 呼び出し関数間に catch
ブロックが存在しない場合、プログラムは終了します。
構文:
throw expression;
通常、この値は、数値、オブジェクト、文字列など、クライアント側コード内の任意の JavaScript 値にすることができます。 しかし Node.js では、文字列をスローしません。 Error
オブジェクトのみをスローします。
エラーオブジェクト
エラー オブジェクトは、Error
オブジェクトのインスタンスであるか、メインの Error
モジュールで提供される Error
クラスを拡張するオブジェクトです。 実行時エラーが発生すると、エラー オブジェクトが生成されます。
カスタム例外のベース オブジェクトとしてエラー オブジェクトを使用することもできます。
throw new Error('You reached the end!');
class MyCustomError extends Error {
// ...
}
throw new MyCustomError();
例外処理
例外ハンドラは try...catch
ステートメントです。 try
ブロックに含まれるコード行でスローされた例外は、適切な catch
ブロックで処理されます。
プログラムの実行中にキャッチされない例外がスローされると、プログラムは失敗します。
try {
/* Your Regular Code */
} catch (e) {
/* Catch your exception here */
}
この例では、e
が例外値です。 さまざまな種類のエラーを検出できる複数のハンドラーを追加できます。
例外のタイプに基づいて、プログラムを変更できます。 プログラム エラーの問題を修正するには、プロセス オブジェクトで uncaughtException
イベントが発生するまで待ちます。
process.on('uncaughtException', err => {
console.error('An uncaught error is caught here', err);
process.exit(1);
});
メイン process
モジュールは自動的に含まれるため、インポートする必要はありません。
promise
で例外を処理する
Promise を使用すると、独自の操作をまとめて連鎖させ、最後にエラーを処理できます。 Promise チェーンは、エラーの処理に優れています。
promise が拒否されると、コントロールは最も近い拒否ハンドラーにジャンプします。 これは実際には非常に便利です。
ご覧のとおり、.catch
はインスタントである必要はありません。 1つまたは複数の .then
の後に表示される場合があります。
fooFunction()
.then(barFunction)
.then(fooBarFunction)
.catch(err => console.error(err));
async/await
で例外を処理する
async/await
を使用すると、try...catch
を使用してエラーをキャッチする必要があります。
async function fooFunction() {
try {
await fooBarFunction();
} catch (err) {
console.error(err.message);
}
}
以下の簡単な例でそれを理解しましょう。
fooBarFunction =
async () => {
throw new Error('Hello DelftStack Users!')
}
async function fooFunction() {
try {
console.log('Before Error') await fooBarFunction();
} catch (err) {
console.error(err.message);
}
} fooFunction()
上記の例では、fooFunction()
を呼び出します。これは最初にメッセージを出力し、次に内部で fooBarFunction()
を呼び出します。 fooBarFunction()
では、fooFunction()
によってキャッチされるエラーをスローするだけです。
Node.js をサポートする Replit で上記のコード スニペットを実行してみます。 以下の結果が表示されます。
出力:
Before Error
Hello DelftStack Users!
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn