2017-03-29 8 views
2

私は以下のようなJavaScriptクラスを持っており、入力変数のデータ型を制御する必要があります。JavaScriptクラスにエラーを投げるのは悪い習慣と考えられますか?

class Store 
{ 
    constructor (name) 
    { 
     if (typeof name !== "string") 
      throw new Error("The first argument must be a string!"); 

     createStore(name); 
    } 

    // [...] 
} 

悪い習慣とは考えられますか?より良い解決策がありますか?

+0

なぜそれは良い習慣ではないでしょうか?失敗は速いです。 – Li357

+0

これは、この「店舗」の意向によって異なります。タイプチェッカーで制御フロー全体が中断されるようにしますか? IMOでは、エラーを返してユーザーが自分が何をしたいかを決めることができます。 –

+0

また、関数の引数で静的型を強制するライブラリである 'Flow'を見ることもできます:https://flow.org/ –

答えて

1

場合によっては、エラーをスローしない方が良い場合もあります。 約束を返す方法があるとしましょう。その場合、おそらくそれを拒否する方が良いでしょう。.catchを使って捕まえることができます。

class Example { 
    test(name) { 
     return new Promise((resolve, reject) => { 
      if (typeof name !== "string") 
       reject("The first argument must be a string!") 
      else 
       resolve() 
     }) 
    } 
} 

let ex = new Example() 
ex.test(['array']).then(() => { 
    console.log('We successfully passed a string!') 
}).catch(err => { 
    console.error(err) 
}) 
関連する問題