ホームページ  >  記事  >  ウェブフロントエンド  >  NodeJS エラー処理のベスト プラクティス

NodeJS エラー処理のベスト プラクティス

PHPz
PHPzオリジナル
2023-05-12 10:35:06737ブラウズ

NodeJS は、イベント駆動型の非同期 I/O に基づくオープン ソースのサーバーサイド JavaScript ランタイム環境です。 NodeJS は、その効率性とスケーラビリティにより、多くのエンタープライズ レベルの Web アプリケーションに最適なテクノロジとなっています。ただし、他のすべてのソフトウェアと同様、NodeJS アプリケーションもエラーや例外の影響を完全に受けないわけではありません。コードの堅牢性と信頼性を向上させるには、エラーを正しく処理することが非常に重要です。

この記事は、開発者がエラーの処理方法を根本的に改善できるように、NodeJS エラー処理のベスト プラクティスをいくつか提供することを目的としています。

1. Error オブジェクトの使用

JavaScript には、実行時エラーを表す標準的な方法である組み込みの Error オブジェクトが用意されています。 NodeJS では、開発者は Error オブジェクトに基づいて独自のカスタマイズされたエラー オブジェクトを作成し、アプリケーションの特定のニーズによりよく適応できます。以下は簡単な例です:

class DatabaseConnectionError extends Error {
  constructor(msg, userFriendlyMsg) {
    super(msg);
    this.userFriendlyMsg = userFriendlyMsg;
    this.name = this.constructor.name;
    Error.captureStackTrace(this, this.constructor);
  }
}

この例では、NodeJS 組み込み Error オブジェクトを拡張し、userFriendlyMsg 属性を追加してユーザーフレンドリーなエラー情報を提供し、この情報を透過的に提供できるようにコンストラクターをオーバーロードします。エラーを作成している間。

2. 非同期例外を適切に処理する

NodeJS は非同期 I/O であるため、その例外処理方法は従来の同期コードとは異なります。したがって、非同期コードで例外を処理するには、いくつかの異なるルールに従う必要があります。非同期例外を適切に処理する 2 つの方法は次のとおりです。

  1. コールバック関数での例外処理

NodeJS では、コールバック関数はイベント駆動型ソリューションの中核です。通常、コールバック関数は (error, data) という 2 つのパラメーター形式をとり、error パラメーターは非同期操作中に発生する可能性のあるエラーを表し、data パラメーターは非同期操作の結果を表します。

コールバック関数の例外を適切に処理するには、error-first コールバック パターンを使用すること、つまりコールバック関数の最初のパラメーターにエラー オブジェクトを渡すことをお勧めします。もちろん、場合によっては、try-catch ステートメントを使用してコールバック関数の例外をキャッチできますが、これは一般的に良い方法ではありません。

以下は簡単な例です:

function readFile(filePath, callback) {
  fs.readFile(filePath, (err, data) => {
    if (err) {
      callback(new Error(`Failed to read file: ${filePath}`));
    } else {
      callback(null, data);
    }
  });
}

この例では、コールバック関数のエラーを手動でチェックし、エラー オブジェクトを最初のパラメータとしてコールバックに渡します。

  1. Promise 例外処理

Promise は、最新の JavaScript で非同期コードを処理するためのより洗練された方法です。 Promise を使用すると、非同期操作で発生する可能性のある例外をより自然に処理できます。以下は簡単な例です:

function readFilePromise(filePath) {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, (err, data) => {
      if (err) {
        reject(new Error(`Failed to read file: ${filePath}`));
      } else {
        resolve(data);
      }
    });
  });
}

この例では、Promise オブジェクトを使用してファイルの非同期読み取り操作を処理し、reject メソッドを使用して Promise のステータスを「拒否」に設定します。例外のイベント。 Promise 例外処理チェーンの各リンクは、例外が無視されないように、catch メソッドを呼び出すか、Promise.allSettled() メソッドを使用する必要があることに注意してください。

3. 適切なログ記録を作成する

エラーが発生した場合、ログを記録することは重要な作業です。ログは、問題を迅速に特定し、エラーの根本原因を特定し、適切な解決策を見つけるのに役立ちます。

NodeJS では、ログ記録には組み込みのコンソール オブジェクトまたはサードパーティのログ記録ライブラリ (winston.js、bunyan など) を使用できます。

複数の NodeJS インスタンスがある場合、または複数のサーバーで実行されている場合は、Elasticsearch、Graylog、Logstash などの中央ログ システムにエラーを記録する必要があります。

4. 適切なデバッグ ツールを使用する

NodeJS のような大規模なサーバー アプリケーションは非常に複雑になる可能性があり、エラー発生時のデバッグが困難になることがあります。 NodeJS アプリケーションをより簡単にデバッグするには、適切なデバッグ ツールを使用できます。一般的に使用されるデバッグ ツールをいくつか示します。

  1. Node.js 組み込みデバッガー

NodeJS の組み込みデバッガーは、NodeJS プロセスで実行される REPL 環境です。これは、実行時の対話型デバッグ、変数の検査、式の実行、コードのステップ実行などに役立ちます。

NodeJS の組み込みデバッガーを有効にするには、次のコマンド ラインを使用します:

node debug [app.js]
  1. Chrome Developer Tools

Chrome Developer Tools は Web 開発です。一般的に使用されるデバッグ ツールの 1 つで、NodeJS アプリケーションのデバッグにも使用できます。 Chrome Developer Tools を使用して NodeJS アプリケーションをデバッグするには、次のコマンド ラインを使用します:

node --inspect[=[host:port]] [app.js]

次に、Chrome ブラウザを開いて次の URL にアクセスします:

chrome://inspect

[リモート ターゲット] オプション, NodeJS アプリケーションを見つけて「検査」ボタンをクリックして開発者ツールを開きます。

概要

この記事では、開発者が Web アプリケーションで発生するエラーをより適切に管理および解決するのに役立つ、NodeJS エラー処理のベスト プラクティスをいくつか紹介します。 Error オブジェクトを使用し、非同期例外を適切に処理し、適切なログを作成し、適切なデバッグ ツールを使用することで、問題を迅速に特定して解決できるため、アプリケーションの信頼性と堅牢性が向上します。

以上がNodeJS エラー処理のベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。