我试图让我的 http api 服务器中的错误处理正常工作,但我不了解节点的错误处理行为。
我已经像这样定义了自己的错误对象:
function ServerError(statusCode, err, message) {
this.status = statusCode;
if (err != undefined) {
this.err = err;
if (message != undefined) {
this.message = message;
}
else {
this.message = err.message || err;
}
}
}
ServerError.prototype = new Error();
我在中间件或处理程序中使用这个对象:
function forceError() {
return function(req, res, next) {
next(new ServerError(500, "Internal error!"));
}
}
如果未定义任何处理程序,此错误将打印到控制台并在响应正文中返回。这发生在诸如TypeErrors
我自己的错误之类的事情上。这很糟糕,因为它包含堆栈跟踪和文件名/路径。
为什么快递返回堆栈跟踪?我认为默认行为只是崩溃,因此不会将服务器上的任何信息泄露给客户端。