2

私は次のようなことを試みています

var store = trans.objectStore("todo"); 

これにより、コンソールに次のエラーが発生します

Uncaught Error: NOT_FOUND_ERR: DOM IDBDatabase Exception 3 

このエラー(オブジェクトストアが存在しない)を予期していますが、キャッチしたいと思います。トランザクションにonerrorを追加しようとしました

trans.onerror = function(e) { ... }

しかし、onerrorは呼び出されません。onerrorを使用してこのエラーをキャッチする方法はありますか?それとも、try / catchでラップする唯一の方法ですか?

4

2 に答える 2

3

なぜその例外をキャッチしたいのですか?ストアを呼び出す前に、その名前で保存されているオブジェクトが存在するかどうかをデータベースで確認できます。

trans.db.objectStoreNames.contains("todo");

例外を処理したい場合は、パフォーマンスに悪影響を及ぼします。

于 2012-08-13T06:18:39.573 に答える
2

onerrorハンドラーは非同期呼び出し用です。objectStoreはAPIの数少ない同期呼び出しの1つであるため、従来のを使用する必要がありますtry..catch(e)

var store;
try { 
   store = trans.objectStore("todo");
} catch( err ) {
   console.log("CAUGHT", err);
}
于 2012-03-26T15:34:22.767 に答える