2017-05-05 10 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演算を使用して、(場合に上書きされる未定義)と、あなたがinstanceof

を使用して出力を一致させることができるようになり、その後に応じ

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

を返すありますコメントに示唆しているように、最後の条件を他の条件の上に置いてください。また、最初の引数を見逃して2番目の引数を得ることはできません。その場合、2番目の引数は最初の引数

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 
} 
関連する問題