2016-05-20 3 views
1

JavascriptにエラーがSQLErrorであることを確認する方法はありますか?例: JavascriptにエラーがSQLErrorであることを確認する方法はありますか?

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

'e instanceof SQLError'? dbと通信するためにどのモジュールを使用しますか? – Slavik

+0

@slavik私は標準のブラウザデータベースメソッドを使用します。 コード 'if(e instanceof SQLError)'が 'ReferenceError:SQLError is not defined'をスローします。 – Dmitry

答えて

0

に等しい:WebSQLで

  • 、エラーコールバックは常にと呼ばれていますSQLError。

  • SQLErrorはです。エラーコールバックにはが使用されています。

  • SQLErrorはErrorのサブクラスではありません。

また、エラーインスタンスで約束を拒否する必要があります(たとえば、http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-rejected-with-a-non-errorを参照)。

したがって、SQLErrorを使用して約束を拒否するには、エラーに変換する必要があります。 (必要ならば、エラーの独自のサブクラスを作成して、instanceofで簡単にSQLエラーを特定できます)。

WebSQLがエラーコールバックを呼び出す時点で、codeおよびmessageフィールドのSQLErrorオブジェクトがあることがわかります。

0

、このいずれかを試してみてください。

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

コードがエラーメッセージを返します。私はエラーがSQLErrorであったかどうかを判断し、これに応じていくつかのコードを実行したい。 エラーメッセージで判断するのが悪いのは 'e.message'の内容が違うからです – Dmitry

0

私がチェック "e.constructor.name" 属性に方法を見つけました。 SQLErrorの場合には、それはあなたが "なSQLError" のスペックhttps://www.w3.org/TR/webdatabase/を検索する場合は、あなたが気づく​​

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