2013-03-14 28 views
3

我在Nodejs應用程序中使用異步來串行運行一系列函數。每個函數都用一個err(可以爲null)和一個結果來調用回調函數。在具有異步的Nodejs中使用自定義錯誤

我想要做的是檢查在一系列回調特定錯誤......一個自定義錯誤:

async.series({ 
    one: function(callback){ 
     // Doing Stuff 
     if(No good) 
     callback(new error('Custom Error'), 'Failure'); 
     else 
     callback(null, 1); 
    }, 
    two: function(callback){ 
     // Doing Stuff 
     if(No good) 
     callback(new error('Custom Error 2'), 'Failure'); 
     else 
     callback(null, 2); 
    } 
}, 
    function(err, results) { 
    if(err) { 
    // Test for which error was thrown above 
    } 
}); 

上創建自定義錯誤,然後在這種情況下測試他們將是巨大的任何想法。

+0

使用大寫'新的錯誤( '自定義消息')' – Bergi 2013-03-14 13:32:51

回答

4

你可以做一個自定義錯誤類:

var util = require('util'); 
var MyError = function (msg) { 
    MyError.super_.apply(this, arguments); 
}; 
util.inherits(MyError, Error); 
// use it in your callback 
callback(new MyError(), ...); 
// check for it 
if (err instanceof MyError) { 
    ... 
}; 
+0

感謝。我希望這是我可以在飛行中做的事情,而不是使用utils繼承。像新的錯誤({type:MyError)); ...然後在回調中測試一個instanceof。好吧。 – abarr 2013-03-15 03:26:09

+0

如果你想用'instanceof'測試,你並不需要'util.inherits','var MyError = function(){};'也可以。 – robertklep 2013-03-15 06:44:39