Node.js アプリケーションを作成してフォールト トレランスを処理する方法

PHPz
リリース: 2023-04-26 09:38:38
オリジナル
567 人が閲覧しました

Node.js は、さまざまな種類のネットワーク アプリケーションを構築するために広く使用されている、人気のあるサーバー側プログラミング言語です。 Web アプリケーションの構築の要求がますます高まるにつれて、フォールト トレランスを処理できる Node.js アプリケーションの人気が高まっています。この記事では、Node.js アプリケーションの作成方法とフォールト トレランスの処理方法を詳しく学びます。

1. エラー処理

プログラムがどれほど堅牢であっても、エラーは避けられません。エラーを正しく処理しないと、プログラムのクラッシュ、ユーザーに対する不親切な動作など、プログラムによって一連の問題が発生する可能性があります。エラーを処理するいくつかの方法は次のとおりです:

1. try...catch ステートメントを使用する

try...catch ステートメントは、エラーを処理する標準的な方法です。エラーを引き起こす可能性のあるコードは try コード ブロックで実行され、エラーが発生した場合は catch コード ブロックでキャッチされて処理されます。ファイル読み取りエラーの処理例を次に示します:

try {
  let file = fs.readFileSync('non-existent-file.txt', 'utf8');
} catch (err) {
  console.error('Error:', err);
}
ログイン後にコピー

2. コールバック関数の使用

Node.js では、コールバック関数を有効にすることが非常に一般的です。コールバック関数では、通常、最初のパラメータはエラー オブジェクトですが、エラーが発生しない場合、最初のパラメータは null になります。ファイル読み取り時のエラーを処理するコールバック関数の使用例を次に示します:

fs.readFile('non-existent-file.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error:', err);
  } else {
    console.log(data);
  }
});
ログイン後にコピー

3. Promise を使用する

Promise を使用すると、非同期操作でのエラーを簡単に処理できます。 Promise.then() メソッドを使用してエラーをチェックします。以下は Promise の使用例です。

const readFileAsync = function (filename, encoding) {
  return new Promise(function (resolve, reject) {
    fs.readFile(filename, encoding, function (err, result) {
      if (err) {
        reject(err);
      } else {
        resolve(result);
      }
    });
  });
};

readFileAsync('non-existent-file.txt', 'utf8')
  .then(data => console.log(data))
  .catch(err => console.error('Error:', err));
ログイン後にコピー

2. 例外処理モジュール

Node.js は、未処理の例外をキャッチするためのグローバル例外処理モジュール process.on('uncaughtException', …) を提供します。 。このモジュールを使用すると、プログラムでエラーが発生したときに開発者が特定のアクションを実行できます。簡単な例を次に示します:

process.on('uncaughtException', function (err) {
  console.error('Error:', err);
});
ログイン後にコピー

ただし、このモジュールの使用がエラーを処理する主な方法であってはなりません。コードに未処理の例外が多数含まれている場合、プログラム内のエラーを処理することがさらに困難になります。このモジュールは注意して使用してください。

3. エラー ログ

エラーを処理する場合、エラー ログ リストをメモリに記録することはお勧めできません。したがって、より良い方法は、エラーをファイルに記録することです。以下に、errorhandler ミドルウェアを使用して Node.js エラーを記録する例を示します。

const express = require('express');
const errorHandler = require('errorhandler');
const app = express();

app.use(errorHandler({
  log: true
}));
ログイン後にコピー

errorhandler ミドルウェアを使用すると、コンソールとファイルにエラーを記録できます。

4. 再試行メカニズム

操作が失敗した場合、通常はエラーがスローされます。ただし、ネットワークの問題など、場合によっては操作を再試行する必要がある場合があります。この場合、再試行メカニズムは非常に重要です。

エラーを処理し、複数回再試行するために使用できる JavaScript 関数を次に示します:

const retry = require('retry');
const fs = require('fs');

const readfileWithRetry = (filename) => {
  const operation = retry.operation();

  return new Promise((resolve, reject) => {
    operation.attempt(currentAttempt => {
      fs.readFile(filename, 'utf-8', (err, fileData) => {
        if (!err) {
          resolve(fileData);
        } else if (operation.retry(err)) {
          console.error('Error:', err);
          console.error('retrying');
        } else {
          reject(operation.mainError());
        }
      });
    });
  });
};
ログイン後にコピー

5. 結論

この記事では、Node.js の使用方法を学びました。 js でのエラー処理とフォールト トレランス。品質は、可能な限り堅牢なコードを作成する場合には重要ですが、エラーを処理する場合にも非常に重要です。エラーの処理は、アプリケーションのパフォーマンスと信頼性を向上させるために重要です。

以上がNode.js アプリケーションを作成してフォールト トレランスを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!