2017-03-23 16 views
0

indexeddbにはonerrorイベントがあるようですので、try catchでラップする必要がありますか?try/catchでindexeddbトランザクションをラップする必要がありますか?

try { 
 
var reqst = window.db.transaction('xyz') 
 
    .objectStore('xyz') 
 
    .get(1234) 
 
reqst.onsuccess = success 
 
reqst.onerror = error 
 
} catch(err) { 
 
    console.log(err.stack) 
 
} 
 

 
function success(response) {} 
 
function error(response) {}

xyzが存在しない場合、私は考えることができる最初のシナリオはあるが、それは開発中巻き込まれることになるエラーのようなものです。

答えて

1

IDBDatabase.transaction can synchronously throw an error in various situationsです。そのようなエラーが発生したときに何かしたいのであれば、try/catchブロックが必要です。他の方法と

同じことは、などIDBTransaction.objectStoreIDBObjectStore.get、同じよう

+0

おかげで@dumbmatter!そのページにはtry catchという言葉はありません。同期エラーは非同期エラーと異なるのですか? _JavaScriptは "非同期的にリクエストを実行するためのステップを実行する"ということがあります。だから私はそれにつながるすべてが試しにキャッチする必要があると思います。それでもなお、それは過度の可能性があるようです。開発中にキャッチされるのではなく、フィールドで発生する可能性のある同期エラーはどのような例ですか? –

+0

おそらくQuotaExceededError?私は別の質問でお尋ねします... –

+0

同期では、 "try/catchで捕まえることができる通常のエラーを投げる"という意味です。非同期は 'onerror'イベントハンドラを介して行われます。だから私のリンク内のものは、 "モードのパラメータが" readonly "や" readwrite "ではなく、TypeErrorをスローすると、それは同期エラーです。また、私はQuotaExceededErrorが非同期にしか起こらないと信じていますが、私は100%確信していません。 – dumbmatter

関連する問題