Tôi muốn sử dụng Miền Node.js để bắt ngoại lệ. Nó đang làm việc cho đến nay, nhưng có một nơi tôi không thể có được các lĩnh vực để bắt ngoại lệ. exception2 trong callback bị bắt và xử lý trong domain.on ('error') handler, nhưng exception1 không bị bắt. Điều kỳ lạ là khi exception1 được ném, nó không tắt nút như tôi mong đợi. Dưới đây là ví dụ của tôi ứng dụng:Không thể xử lý ngoại lệ với miền node.js bằng cách sử dụng 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');
}
});
});
Để có được exception2 để thực hiện, tôi nhận xét ra ngoại lệ 1.
Vì vậy, ngoại lệ sẽ bị bắt bởi trình xử lý miền trong sản xuất theo nhận xét của bạn? – user1007983