hprose/hprose-nodejs

错误无法捕捉

Gaubee opened this issue · 5 comments

类似代码如下:

proxy.hello("world",function(){
  throw "Hello Error!";
},function(err){//这里捕捉不到,外面try-catch也不行
  console.error("Error:", e);
});

我还用fibers进行了异步转同步,但是由于hprose里头把错误吃了,冒泡不了,无不得不把错误处理放到另外一个异步函数中来进行抛出。你感受一下下面这类似的代码:

proxy.hello("world", function() {
    //错误不按正常的处理来抛出,不能在这里抛出
    // throw "Hello Error!";

    //新开一个异步函数放到异步队列中,脱离当前队列,摆脱hprose的捕捉
    setImmediate(function() {
        throw "Hello Error!";
    });
});

//我自己的统一错误处理方案代码...
//....
andot commented
proxy.hello("world")
.then(function(){
  throw "Hello Error!";
})
.catchError(function(err){
  console.error("Error:", err);
});

你试试这样可不可以。

不行,也捕捉不到,已经更新到最新了。

andot commented

好的,等我修正一下。

andot commented

现在这三种方式都可以捕获回调中throw的异常了:

proxy.hello("world", function(){
  throw "Hello Error - 1!";
},function(name, err){
  console.error("Error:", err);
});

proxy.hello("world", function(){
  throw "Hello Error - 2!";
}).catchError(function(err){
  console.error("Error:", err);
});

proxy.hello("world").then(function(){
  throw "Hello Error - 3!";
}).catchError(function(err){
  console.error("Error:", err);
});