2017-05-05 71 views
0

从函数返回错误需要参数的一些好的做法是不是在函数内执行?如果函数中没有参数,返回错误

function someFunction(hello, world) { 
    if (!hello) { 
    console.error("missing first parameter") 
    } else if (!world) { 
    console.error("missing second parameter") 
    } else if (!hello && !world) { 
    console.error("missing both parameters") 
    } 
} 

someFunction("hola"); 
+0

抛出新的错误(“失踪PARAM”) – FrankCamara

+1

在你的榜样,将永远不能登录的第三个错误,把那作为你的第一个条件。 – kalsowerus

+0

这仅仅是一个例子,因为工作急促,所以我只是把它记下来。 –

回答

2

检测缺席参数最好的办法是使用typeof(如果未定义,被覆盖),然后返回相应

if (typeof hello === 'undefined') { 
    console.error("missing first parameter") 
    return new Error('missing first parameter') 
..... 

之后,你将能够使用instanceof

输出相匹配正如评论中所提出的,将最后一个条件放在其他条件之上,并且你不能错过第一个参数并得到第二个参数,因为在这种情况下,你的第二个参数将成为第一个参数

function some(hello, world) { 
 
    if (typeof hello === 'undefined' && typeof world === 'undefined') { 
 
    console.error("missing both parameter") 
 
    return new Error("missing both parameter") 
 
    } else if (typeof world === 'undefined') { 
 
    console.error("missing second parameters") 
 
    return new Error("missing second parameter") 
 
    } 
 
} 
 
console.log(some() instanceof Error) 
 
console.log(some('a') instanceof Error)

1

你可以用你的代码try catch块内抛出从您的代码给调用者引发任何异常。

function someFunction(hello, world) { 
    try{ 
    //use any of the arguments 
    }catch(err){ 
    throw new Error('something went wrong'); 
    } 
} 

可能适合您的情况的另一种方法是使用默认参数来保证代码的安全。

function someFunction(hello, world) { 
    hello = hello || {}; 
    world = world || {}; 
    //hello and world are initialized here in any case 
}