Expressjs-error-handling

提供:Dev Guides
移動先:案内検索

ExpressJS-エラー処理

Expressのエラー処理はミドルウェアを使用して行われます。 しかし、このミドルウェアには特別な特性があります。 エラー処理ミドルウェアは、他のミドルウェア関数と同じ方法で定義されますが、エラー処理関数* MUSTには3つではなく4つの引数*があります( err、req、res、next )。 たとえば、エラーに対して応答を送信するには、次のように使用できます-

app.use(function(err, req, res, next) {
   console.error(err.stack);
   res.status(500).send('Something broke!');
});

これまで、ルート自体のエラーを処理していました。 エラー処理ミドルウェアにより、エラーロジックを分離し、それに応じて応答を送信できます。 ミドルウェアで説明したnext()メソッドは、次の*ミドルウェア/ルートハンドラ*に移動します。

エラー処理のために、* next(err)*関数があります。 この関数を呼び出すと、すべてのミドルウェアがスキップされ、そのルートの次のエラーハンドラーに一致します。 例を通してこれを理解しましょう。

var express = require('express');
var app = express();

app.get('/', function(req, res){
  //Create an error and pass it to the next function
   var err = new Error("Something went wrong");
   next(err);
});

/*
 *other route handlers and middleware here
* ....
 */

//An error handling middleware
app.use(function(err, req, res, next) {
   res.status(500);
   res.send("Oops, something went wrong.")
});

app.listen(3000);

このエラー処理ミドルウェアは、ルートの後に戦略的に配置するか、エラータイプを検出し、それに応じてクライアントに応答する条件を含めることができます。 上記のプログラムは、次の出力を表示します。

エラー処理