如何处理导致Node.js崩溃的twilio错误

时间:2019-01-14 03:50:47

标签: node.js twilio

抛出错误时,使用twilio nodejs api会使节点崩溃。 例如,如果房间已经存在。.

  

/home/web/node_modules/twilio/node_modules/q/q.js:876       抛出错误;错误:房间存在

尝试捕获无济于事。 试图把它包装成一个承诺,没有运气。 试图先获取房间,但是如果房间不存在,它也会以相同的方式崩溃。 试图检索所有正在进行中的房间的列表,但它永远停滞不前。我可以获得所有已完成房间的列表,但我需要检查正在进行中的房间。 无论哪种方式,崩溃节点都不是一件好事,需要能够处理这些偶然性。

    exports.createBackendRoom = function (roomname, callback) {
        try {
            client.video.rooms.create({uniqueName: roomname})
            .then(function(room) {
                console.log(room);
                callback(true);
            }).done();
        } catch(e) {
            console.log(e);
            callback(false);
        }
    }

无法处理错误。

/home/web/node_modules/twilio/node_modules/q/q.js:876     抛出错误; 错误:房间存在

如何优雅地处理这些问题?

1 个答案:

答案 0 :(得分:1)

  

尝试捕获没有帮助。

这是因为异步操作引发了错误。 Try-catch将处理同步操作引发的错误。要处理异步错误,请添加一个catch(err=>{})

exports.createBackendRoom = function (roomname, callback) {
  client.video.rooms.create({uniqueName: roomname})
    .then(function (room) {
      console.log(room);
      callback(true);
    }).catch(err => {
    console.log(err); // handle error
    callback(false);
  }).done();
};