捕获错误
在node.js中,异步API的错误信息都是通过回调函数获取的,支持Promise对象的异步API发送错误可以通过catch方法捕获,异步函数执行如果发生错误要如何捕获错误。
try catch 可以捕获异步函数以及其他同步代码在执行过程中发生的错误,但是不能捕获其他类型的API发生的错误。
app.get("/",async(req,res,next)=>{
try{
await User.find({name:"张三"})
}catch(ex){
next(ex);
}
});
// 引入express框架
const express = require('express');
// 创建网站服务器
const app = express();
const fs = require('fs');
const promisify = require('util').promisify;
const readFile = promisify(fs.readFile);
// 错误处理中间件
// 当访问/index这个请求地址的时候,程序就会抛出一个错误
app.get('/index',async (req, res, next) => {
try{
await readFile('/aaa.js')
}catch (ex) {
next(ex);
}
// await readFile('./aaa.js')
})
// 当程序抛出错误以后,会自动执行错误处理函数中间件
app.use((err,req,res,next)=>{
// 当服务器发生错误,状态码应该设为500
res.status(500).send(err.message);
})
// 监听端口
app.listen(3000);
console.log('网站服务器启动成功')
程序不会因为一个文件没有读取到而终止运行,这增加了程序的健壮性。
try catch 可以捕获到程序的错误,可以捕获异步函数的错误和同步代码的错误但是不能捕获其他类型的错误。比如说回调函数或Promise对象的。