Node.js でエラーをスローする

Shraddha Paghdar 2023年10月12日
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 Paghdar avatar Shraddha Paghdar avatar

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

関連記事 - Node.js Error