Node出错崩溃了怎么办

Node出错崩溃了怎么办,第1张

使用uncaughtException

我们可以uncaughtException来全局捕获未捕获的Error,同时你还可以将此函数的调用栈打印出来,捕获之后可以有效防止node进程退出,如:

process.on('uncaughtException', function (err) {

//打印出错误

console.log(err)

//打印出错误的调用栈方便调试

console.log(err.stack);

})

这相当于在node进程内部进行守护, 但这种方法很多人都是不提倡的,说明你还不能完全掌控Node.JS的异常

使用 try/catch

我们还可以在回调前加try/catch,同样确保线程的安全。

var http = require('http')

http.createServer(function(req, res) {

try {

handler(req, res)

} catch(e) {

console.log('\r\n', e, '\r\n', e.stack)

try {

res.end(e.stack)

} catch(e) { }

}

}).listen(8080, '127.0.0.1')

console.log('Server running at http://127.0.0.1:8080/')

var handler = function (req, res) {

//Error Popuped

var name = req.params.name

res.writeHead(200, {'Content-Type': 'text/plain'})

res.end('Hello ' + name)

}

这种方案的好处是,可以将错误和调用栈直接输出到当前发生的网页上。

启动文件最后加上这个处理试试看app.js

app.use(function (err, req, res, next) {

res.status(err.status || 500)

res.render('error', {

message: err.message,

error: {}

})

})

那你需要查看一下mysql connector的api一般肯定有异常处理机制。我用的mongoose。在声明连接的时候加上异常处理。

mongoose.connection.on('error', function (err) {

console.error('Mongoose connection error: ' + err)

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8438735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存