Spec-Zone.ru › Web APIs

IDBRequest: свойство error

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна во всех браузерах с сентября 2021 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Web Workers.

Чтение-только свойство error интерфейса IDBRequest возвращает ошибку в случае неудачного запроса.

Значение

Объект DOMException или null в случае отсутствия ошибки. Объект исключения будет иметь одно из следующих имен, в зависимости от причины ошибки.

Эти ошибки асинхронные, что означает, что их нельзя обработать с помощью try...catch. Однако, если у IDBRequest есть обработчик события error, вы все равно можете проверить такие ошибки, запросив свойство error запроса через объект события, например event.target.error.name или event.target.error.message.

AbortError

Если вы прервали транзакцию, все запросы, которые все еще выполняются, получат эту ошибку.

ConstraintError

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

NotReadableError

Получается для ошибок чтения, которые нельзя исправить. В частности, эта ошибка указывает на то, что запись присутствует в базе данных, но значение не удалось получить. См. Временные и невосстановимые ошибки чтения ниже для получения дополнительной информации.

QuotaExceededError

Получается, если приложение исчерпало квоту дискового пространства. В некоторых случаях браузеры предлагают пользователю больше места, и ошибка получается, если они отклоняют запрос. В других случаях браузер использует эвристику, чтобы определить, можно ли выделить больше места.

UnknownError

Получается для временных ошибок чтения, включая общие ошибки ввода-вывода на диске. См. Временные и невосстановимые ошибки чтения ниже для получения дополнительной информации.

VersionError

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

Временные и невосстановимые ошибки чтения

Ошибки чтения возникают, когда хранилище IndexedDB сохраняет значения, а затем не удается прочитать эти значения, хотя связанные записи все еще находятся в базе данных.

Ошибки чтения могут быть двух типов — временные или невосстановимые:

Временные ошибки чтения сигнализируются типом UnknownError, и обычно вызваны нехваткой памяти. Это не должно быть проблемой для небольших баз данных. Чтобы избежать ситуаций с нехваткой памяти в больших базах данных, попробуйте разбить доступ к базе данных, чтобы загружать только необходимые записи в любое время, например, используя определенные диапазоны ключей, относящиеся к запросу пользователя или механизму постраничной навигации. Если произойдет ошибка из-за нехватки памяти, пользователю может быть предложено закрыть другие приложения, чтобы освободить место на уровне операционной системы.

Невосстановимые ошибки чтения сигнализируются типом NotReadableError, и вызваны удалением исходных файлов.

Например, некоторые браузеры хранят большие значения (например, аудиофайлы-BLOB для автономного приложения для подкастов) как отдельные файлы, к которым осуществляется доступ через ссылку, хранящуюся в базе данных. Было замечено, что эти отдельные файлы могут быть удалены, потому что они отображаются как непрозрачные файлы для пользователей, когда они используют программы восстановления дискового пространства, что приводит к невосстановимым ошибкам чтения при следующем доступе к IndexedDB.

Возможные меры по исправлению невосстановимых ошибок чтения могут включать уведомление пользователя, удаление записи из базы данных, а затем попытку повторного извлечения данных с сервера.

Исключения

InvalidStateError DOMException

Выбрасывается при попытке доступа к свойству, если запрос не завершен, и, следовательно, ошибка недоступна.

Примеры

В следующем примере запрашивается заданный заголовок записи, onsuccess извлекается связанная запись из IDBObjectStore (доступная как objectStoreTitleRequest.result), обновляется одно свойство записи, а затем обновленная запись помещается обратно в хранилище объектов. Также внизу находится функция onerror, которая сообщает, в чем заключалась ошибка, если запрос завершился неудачно. Для полного рабочего примера см. наше приложение To-do Notifications (Посмотреть пример вживую).

const title = "Walk dog";

// Open up a transaction as usual
const objectStore = db
  .transaction(["toDoList"], "readwrite")
  .objectStore("toDoList");

// Get the to-do list with the specified title
const objectStoreTitleRequest = objectStore.get(title);

objectStoreTitleRequest.onsuccess = () => {
  // Grab the data object returned as the result
  const data = objectStoreTitleRequest.result;

  // Update the notified value in the object to "yes"
  data.notified = "yes";

  // Create another request that inserts the item
  // back into the database
  const updateTitleRequest = objectStore.put(data);

  // When this new request succeeds, run the displayData()
  // function again to update the display
  updateTitleRequest.onsuccess = () => {
    displayData();
  };
};

objectStoreTitleRequest.onerror = () => {
  // If an error occurs with the request, log what it is
  console.log(
    `There has been an error with retrieving your data:
    ${objectStoreTitleRequest.error.name}: ${objectStoreTitleRequest.error.message}`,
  );
};

Спецификации

Спецификация
Indexed Database API 3.0
# ref-for-dom-idbrequest-error①

Совместимость браузеров

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
DOMException 48 ≤18 58 35 Нет 48 58 35 Нет 5.0 48
error 23 12 10 15 8 25 22 14 8 1.5 4.4
transient_unrecoverable_read_errors
132Возвращает исключение NotReadableError для невосстановимых ошибок чтения и UnknownError для временных ошибок чтения.
130Возвращает исключение NotFoundError для невосстановимых ошибок чтения и DataError для временных ошибок чтения.
Нет 14
117Возвращает исключение NotReadableError для невосстановимых ошибок чтения и UnknownError для временных ошибок чтения.
115Возвращает исключение NotFoundError для невосстановимых ошибок чтения и DataError для временных ошибок чтения.
8
132Возвращает исключение NotReadableError для невосстановимых ошибок чтения и UnknownError для временных ошибок чтения.
130Возвращает исключение NotFoundError для невосстановимых ошибок чтения и DataError для временных ошибок чтения.
22
86Возвращает исключение NotFoundError для невосстановимых ошибок чтения и DataError для временных ошибок чтения.
8 Нет
132Возвращает исключение NotReadableError для невосстановимых ошибок чтения и UnknownError для временных ошибок чтения.
130Возвращает исключение NotFoundError для невосстановимых ошибок чтения и DataError для временных ошибок чтения.

См. также

  • Использование IndexedDB
  • Начало транзакций: IDBDatabase
  • Использование транзакций: IDBTransaction
  • Указание диапазона ключей: IDBKeyRange
  • Извлечение и внесение изменений в данные: IDBObjectStore
  • Использование курсоров: IDBCursor
  • Пример ссылки: To-do Notifications (Посмотреть пример вживую).

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest/error

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API