当抛出错误时,将响应重定向到HTTP 500错误处理程序
Redirecting a response to an HTTP 500 error handler, when an error is thrown
如果一些底层组件抛出错误,我如何得到通知express.js堆栈?我正在使用一个底层数据访问框架,它偶尔会抛出特定的错误(例如,当在DB中找不到记录时)。
express.js是否提供了直接跳转到500错误处理程序的方法,并将响应重定向到相应的页面?不幸的是,我没有看到使用标准express.js方式的直接方法(使用next
中间件处理程序),除非我使用try…到处捕获,这也是一些开销
通常你不会重定向到500页。你要做的就是让异常传播,如果抛出异常,node.js会为你做一个500。
我有一些相关的规则。也许你会发现它们很有用:
- 永远不要在异步代码(如node.js)中使用try/catch。错误通常通过提供的回调函数的第一个参数传播。
- 如果我需要返回一个错误给用户,我使用
res.send('Error', 500);
给那些像我一样还在寻找答案的人:
1-使用express默认errorHandler中间件
app.use(express.errorHandler());
或
2-提供自己的错误处理中间件:
app.use(function (error, req, res, next) {
res.status(500);
res.render("500.jade", {});
});
理想情况下,您希望在DEV
上使用第一个选项,而在PROD
上使用第二个选项
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.use((function (error, req, res, next) {
res.status(500);
res.render("500.jade", {});
});
注意:错误处理应该策略性地把放在app.router
相关文章:
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- spring和angularJS(我得到了类似HTTP状态404的错误)
- $http服务未触发成功或错误回调
- 为什么我在Cloud9中的http请求总是返回错误
- 为什么我的$http.post返回一个400错误
- AngularJS$http.post调用返回502(坏网关)错误
- "所请求的名称已经作为不同类型的“”存在;HTTP 409响应错误
- 岗位http://localhost:3000/api/signup400(错误请求)
- $http GET URL更改并查找错误的资源
- 在AngularJS中使用$http.get检索JSON时出现错误400
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- 未捕获的错误: [$injector:modulerr] http ..(使用纯 HTML)
- AngularJS或JQuery解析错误格式的JSON(http get)
- 从 Ajax 获取由 ZombieJS 的异步点击事件触发的 Http 错误
- AngularJs 错误:$http请求虽然在控制器中定义
- GWT应用程序中出现错误HTTP 404(“Script Tag Failure-no status available
- 在openmeetings中上载/共享文件时出现错误HTTP:500
- Angular HTTP GET 与 TypeScript 错误 http.get(..).映射不是 [null] 中的
- browserify 错误:http.createServer 不是一个函数
- 未捕获错误:[$http:badreq] Http 请求配置 url 必须是字符串 (AngularJS)