在JavaScript类中抛出错误被认为是不好的做法吗?

时间:2017-03-29 21:53:44

标签: javascript class exception ecmascript-6

我有一个类似下面的JavaScript类,我需要控制输入变量的数据类型。

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

        createStore(name);
    }

    // [...]
}

这被认为是一种不好的做法吗?还有更好的解决方案吗?

1 个答案:

答案 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)
})