我有一个类似下面的JavaScript类,我需要控制输入变量的数据类型。
class Store
{
constructor (name)
{
if (typeof name !== "string")
throw new Error("The first argument must be a string!");
createStore(name);
}
// [...]
}
这被认为是一种不好的做法吗?还有更好的解决方案吗?
答案 0 :(得分: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)
})