我想使用Node.js域來捕獲異常。到目前爲止它工作正常,但有一個地方我無法通過域來捕捉異常。在回調中的exception2被捕獲並在domain.on('error')處理程序中處理,但是未捕獲到exception1。奇怪的是,當引發exception1時,它並沒有像我期望的那樣關閉節點。這裏是我的示例應用程序:無法處理使用快遞的node.js域的異常
var domain = require('domain');
var request = require('request');
var express = require('express');
var serverDomain = domain.create();
serverDomain.on('error', function(err) {
console.log("Server Domain Error: " + err);
});
var app;
serverDomain.run(function() {
app = express();
app.listen(3000);
});
app.use(function(req, res, next) {
var reqDomain = domain.create();
reqDomain.add(req);
reqDomain.add(res);
reqDomain.on('error', function(err) {
console.log("Req Domain Error: " + err);
reqDomain.dispose();
next(err);
});
next();
});
app.get('/', function(req, res) {
var uri = "http://google.com";
exception1.go();
request.get({url:uri, json: {}},
function (error, response, body) {
if(response.statusCode === 200) {
exception2.go();
res.send('Success getting google response');
}
});
});
要獲得exception2執行,我註釋掉例外1.
因此,根據您的評論,異常將被生產中的域處理程序捕獲? – user1007983