在Javascript中有一种方法可以确定错误是SQLError吗?

时间:2016-05-20 10:10:32

标签: javascript sqlite

Javascript中有没有办法确定错误是SQLError?例:

mydb.query()    // method returns Promise. It can throw SQLError by SQLite
    .catch(function(e){
        // some code to determine error type
    });

3 个答案:

答案 0 :(得分:0)

试试这个:

try{abc();}
catch(e){var err = e ; console.log(err.message);}

答案 1 :(得分:0)

我找到了检查“e.constructor.name”属性的方法。在SQLError的情况下,它等于"SQLError"

mydb.pQuery()    // method returns Promise. It can throw SQLError by SQLite
    .catch(function(e){
        if(e.constructor.name==='SQLError'){
            // code
        }
    })

答案 2 :(得分:0)

如果您在规范https://www.w3.org/TR/webdatabase/中搜索" SQLError",您会注意到:

  • 在WebSQL中,错误回调是始终使用SQLError调用。

  • SQLError仅 用于错误回调。

  • SQLError不是Error的子类。

此外,应使用Error实例拒绝承诺(例如,请参阅http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-rejected-with-a-non-error)。

因此,要拒绝使用SQLError的promise,您应该将其转换为Error。 (如果需要,可以创建自己的Error子类,以便使用instanceof轻松识别SQL错误。

这很容易做到,因为在WebSQL调用错误回调的时候,你知道你有一个带有codemessage字段的SQLError对象。