DOM IDBDatabase Exception 3 при использовании indexedDB - PullRequest
2 голосов
/ 26 марта 2012

Я пытаюсь что-то вроде

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

, которое выдает в консоли следующее сообщение об ошибке

Uncaught Error: NOT_FOUND_ERR: DOM IDBDatabase Exception 3 

Хотя я ожидаю эту ошибку (хранилище объектов не существует), ноЯ хочу поймать это.Я попытался добавить ошибку к транзакции

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

, но ошибка не вызывается.Есть ли способ отловить эту ошибку с помощью onerror?Или это единственный способ обернуть его с помощью try / catch?

Ответы [ 2 ]

3 голосов
/ 13 августа 2012

Почему вы хотите поймать это исключение?прежде чем вызывать хранилище, вы можете проверить в базе данных, существует ли объект, сохраненный с таким именем.

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

Если вы хотите работать с исключениями, это плохо сказывается на производительности.

2 голосов
/ 26 марта 2012

Обработчики onerror предназначены для асинхронных вызовов.objectStore - это один из немногих синхронных вызовов в API, поэтому вам придется использовать традиционный try..catch(e).

var store;
try { 
   store = trans.objectStore("todo");
} catch( err ) {
   console.log("CAUGHT", err);
}
...