本来想问一个问题,关于如何基于Node.js创建robuts web server。但是,这可能是一个非常大且模棱两可的问题。因此,我将其分解为创建 robuts Web 服务器时所面临的小而具体的问题或挑战。
所以,我面临的挑战之一是如何在 Node.js 中捕获所有未处理的错误?我想这样做是因为我不希望任何未处理的错误阻止 Node.js 运行,从而导致 Web 服务器停机。
想到的解决方案是将服务器运行的代码块放在 try-catch 块中,以捕获所有未处理的错误。但是,如果异步方法发生任何错误,这将不起作用。例如,我的 Web 服务器可能如下代码所示:
var fs = require('fs');
var http = require('http');
try {
// Here is my main web server, it could happen errors by adding
// more and more modules and functionalities to my server.
// I need to catch all unhandled errors to prevent server from crashing
// So, I put my whole server running in a try-catch block, but any error from
// an async method could not be caught!
http.createServer(function(req, res) {
throw Error("An unhandled error happens!");
}).listen(1234);
}catch (e){
console.log("An unhandled error caught!")
}
console.log('Server is listening to port 1234');
那么,我是否处于正确的错误处理方向以确保服务器不会停止?还是有其他机制可以使服务器从错误中恢复?