想象我有一個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)