【知识整理】Node.js-Koa之错误处理
2017-11-29 16:08
591 查看
一。错误处理
1.500错误:如代码运行过程发生错误,我们需要把错误信息返回给用户。HTTP协议规定这时要返回500状态吗,koa提供了ctx.throw()方法,用来抛出错误。
const main = ctx =>{
ctx.throw(500);
}2.404错误:如将ctx.response.status设置成404,相当于ctx.thow(404),返回404错误
const main = ctx =>{
ctx.response.status = 404;
ctx.response.body = 'Page Not Fo..und';
}3.处理错误的中间件:为方便处理错误,最好用try-catch将其捕获,但每个中间件都这么写就很麻烦,可以让最外层的中间件负责所有中间件的错误处理。
const handler = async (ctx, next) =>{
try{
await next();
}catch(e){
ctx.response.status = e.statusCode ||e.status ||500;
}
}
const main = ctx =>{
ctx.throw(500);
}
app.use(handler);
app.use(main);4.error事件监听:运行过程中出错,koa会触发一个error事件。监听该事件,可以处理错误。
const main = ctx =>{
ctx.throw(500);
};
app.on('error', (err, ctx) =>{
console.error(err);
})5.释放error事件:如果错误被try-catch捕获,就不触发error事件,这时必须调用ctx.app.emit(),手动释放error事件,才能让监听函数生效
const handler = async (ctx, next) =>{
try{
await next();
}catch(err){
ctx.respose.status = err.statusCode ||err. status || 500;
ctx.response.type = 'html';
ctx.response.body = '<p>出错啦</p>';
ctx.app.emit('error', err, ctx);
}
}
ctx.main = ctx =>{
ctx.throw(500);
}
app.on('error', function(err){
console.log(err);
})
1.500错误:如代码运行过程发生错误,我们需要把错误信息返回给用户。HTTP协议规定这时要返回500状态吗,koa提供了ctx.throw()方法,用来抛出错误。
const main = ctx =>{
ctx.throw(500);
}2.404错误:如将ctx.response.status设置成404,相当于ctx.thow(404),返回404错误
const main = ctx =>{
ctx.response.status = 404;
ctx.response.body = 'Page Not Fo..und';
}3.处理错误的中间件:为方便处理错误,最好用try-catch将其捕获,但每个中间件都这么写就很麻烦,可以让最外层的中间件负责所有中间件的错误处理。
const handler = async (ctx, next) =>{
try{
await next();
}catch(e){
ctx.response.status = e.statusCode ||e.status ||500;
}
}
const main = ctx =>{
ctx.throw(500);
}
app.use(handler);
app.use(main);4.error事件监听:运行过程中出错,koa会触发一个error事件。监听该事件,可以处理错误。
const main = ctx =>{
ctx.throw(500);
};
app.on('error', (err, ctx) =>{
console.error(err);
})5.释放error事件:如果错误被try-catch捕获,就不触发error事件,这时必须调用ctx.app.emit(),手动释放error事件,才能让监听函数生效
const handler = async (ctx, next) =>{
try{
await next();
}catch(err){
ctx.respose.status = err.statusCode ||err. status || 500;
ctx.response.type = 'html';
ctx.response.body = '<p>出错啦</p>';
ctx.app.emit('error', err, ctx);
}
}
ctx.main = ctx =>{
ctx.throw(500);
}
app.on('error', function(err){
console.log(err);
})
相关文章推荐
- 【知识整理】Node.js-Koa之Web App的功能
- 【知识整理】Node.js-Koa之路由
- 【知识整理】Node.js-Koa之Context、HTTP Response类型
- 使用Raygun对Node.js应用进行错误处理的方法
- Node.js权威指南 (10) - Node.js中的错误处理与断言处理
- python基础知识整理——错误以及异常处理
- JavaScript 遗漏知识再整理;错误处理,类型转换以及获取当前时间、年份、月份、日期;
- 【知识整理】Node.js-Sequelize之模型(表)之间的关联关系
- Node.js错误处理最佳实践
- NodeJS Connect 简单错误处理中间件
- 【知识整理】Node.js-Sequelize之原始查询
- 使用Raygun对Node.js应用进行错误处理的方法
- 【知识整理】javascript基础语法总结(9)——错误处理
- 【知识整理】Node.js-Sequelize之查询
- KoaHub.JS基于Node.js开发的处理和显示日期代码
- npm安装时出现错误解决办法及mac下升级node.js
- JS中错误处理
- HTML+CSS+JS部分知识整理
- 整合SSH的顺序以及额外知识(处理中文乱码、jsp错误信息内部设置提示)
- 2018年Koa2+Nodejs+MongoDb视频教程IT营