chcę użyć node.js Domeny złapać wyjątki. Działa do tej pory, ale jest jedno miejsce, w którym nie mogę uzyskać domen, aby złapać wyjątek. wyjątek2 w wywołaniu zwrotnym jest przechwytywany i obsługiwany w procedurze obsługi domain.on ("błąd"), ale wyjątek 1 nie został przechwycony. Dziwne jest to, że gdy zostanie zgłoszony wyjątek1, nie wyłącza się węzła, tak jak się spodziewałem. Oto mój przykład aplikacja:stanie obsłużyć wyjątek z node.js domen przy użyciu express
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');
}
});
});
Aby uzyskać exception2 wykonać, mogę wypowiedzieć się wyjątek 1.
W związku z tym wyjątek zostanie przechwycony przez program obsługi domen w produkcji zgodnie z Twoim komentarzem? – user1007983