如何处理交易错误?

角菜鸟

假设我在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块,我怎样检测发生了错误,然后做什么

(由于改编了一个示例,所以我对这段代码了解甚少。)

角菜鸟

花了一些时间学习诺言

var mysql   = require('mysql');
var Promise = require('bluebird');
Promise.promisifyAll(require('mysql/lib/Connection').prototype);

connection.beginTransactionAsync().then(function() {
  return connection.queryAsync('INSERT INTO Channels SET ?', channel);
}).then(function() {
  return connection.queryAsync('INSERT INTO Screencasts1 SET ?', screencast);
}).then(function() {
  return connection.commit();
}).error(function(e) {
  connection.rollback();
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何处理交易错误?

来自分类Dev

有交易时如何处理错误?

来自分类Dev

删除文档后,如何处理Firestore交易中的错误

来自分类Dev

在Oracle下如何处理大型交易?

来自分类Dev

如何处理ETIMEDOUT错误?

来自分类Dev

如何处理OffsetOutOfRangeException错误?

来自分类Dev

如何处理RapidXml错误?

来自分类Dev

如何处理导入错误?

来自分类Dev

如何处理OffsetOutOfRangeException错误?

来自分类Dev

如何处理错误 1064?

来自分类Dev

如何处理 NoneType 错误

来自分类Dev

在J2EE初期,交易如何处理?

来自分类Dev

春季如何处理交易回滚异常?

来自分类Dev

如何处理和处理致命错误

来自分类Dev

如何处理承诺中的错误?

来自分类Dev

如何处理CORS错误代码?

来自分类Dev

如何处理JavaScript解码错误?

来自分类Dev

Alamofire:如何处理和分类错误?

来自分类Dev

Armadillo库如何处理错误?

来自分类Dev

如何处理PassportJS端点错误

来自分类Dev

如何处理错误的输入C?

来自分类Dev

如何处理淘汰订阅中的错误

来自分类Dev

如何处理集合的Phalcon ACL错误?

来自分类Dev

如何处理imaplib2错误

来自分类Dev

如何处理Shapely中的舍入错误

来自分类Dev

如何处理GRequests中的错误?

来自分类Dev

演员终止的原因或如何处理错误

来自分类Dev

如何处理Retrofit 2.0中的错误

来自分类Dev

我该如何处理在picocli错误?