2016-01-12 25 views
2

我有一个纯函数,看起来像:在javascript纯同步函数返回一个错误

function foobar(str) { 
    let newStr; 
    // code that depends on str and forge a new string 
    ... 

    return newStr; 
} 

现在,我想提出一个错误,如果未如预期str
我的错误将是一个简单的对象,如{code:'foo',msg:'bar'},我正在寻找从我的函数返回此错误的正确方法。

我想避免异常和承诺(因为它们是异步的),理想情况下,我希望这个函数采用函数式编程风格。
任何线索?

+0

使用异常'抛{代码:“富”,味精: 'bar'};' – jcubic

+0

那么你只是想返回一个对象,或者实际上抛出一个错误? – adeneo

+0

可能重复的[JavaScript中的自定义异常](http://stackoverflow.com/questions/464359/custom-exceptions-in-javascript) –

回答

3

如果你需要避免异步和典型的错误处理,你需要你的函数返回一个对象而不是一个字符串。对象可以有属性

var returnObject = { 
    error: false, 
    value: "the string", 
    errorValue: "OK" 
}; 

,则每次调用它需要检查returnObject.error的第一条件下的功能:

var getStringObj = foobar("string input"); 
if (getStringObj.error) { 
    // probably display getStringObj.errorValue 
} else { 
    //normal handling 
}