错误无法捕捉
Gaubee opened this issue · 5 comments
Gaubee commented
类似代码如下:
proxy.hello("world",function(){
throw "Hello Error!";
},function(err){//这里捕捉不到,外面try-catch也不行
console.error("Error:", e);
});
Gaubee commented
我还用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);
});
你试试这样可不可以。
Gaubee commented
不行,也捕捉不到,已经更新到最新了。
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);
});