想象我有一个HTTP请求处理机内部以下代码:如何处理交易错误?
// these come from the HTTP request payload.
var channel = {};
var screencast ={};
try {
connection.beginTransaction(function(err) {
if (err) {
throw err;
}
connection.query('INSERT INTO Channels SET ?', channel, function (err, result) {
if (err) {
connection.rollback(function() {
throw err;
});
}
connection.query('INSERT INTO Screencasts SET ?', screencast, function (err, result) {
if (err) {
connection.rollback(function() {
throw err;
});
}
connection.commit(function(err) {
if (err) {
connection.rollback(function() {
throw err;
});
}
console.log('success!');
});
});
});
});
} catch (err) {
// render error page or something like that.
console.log(err)
}
当发生错误时,我期望要调用的catch
块 - 这是并非如此。 为什么不呢?
我看不出抛出这么多的错误,如果我不能catch
他们。有人可以解释吗?
此外,如果我不能依靠catch
块,如何检测到发生错误,然后做某事?
(我知道这么少这个代码,因为我适应的example)