IDBRequest: error Eigenschaft
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die schreibgeschützte error
-Eigenschaft des
IDBRequest
-Interfaces gibt den Fehler im Falle einer fehlgeschlagenen Anfrage zurück.
Wert
Ein DOMException
oder null
, wenn kein Fehler vorliegt. Das Ausnahmeobjekt hat je nach dem verursachenden Fehler einen der folgenden Namen.
Diese Fehler sind asynchron und können daher nicht über try...catch
behandelt werden. Wenn jedoch einem IDBRequest
ein error
-Ereignishandler zugewiesen ist, können Sie solche Fehler dennoch inspizieren, indem Sie die error
-Eigenschaft der Anfrage über das Ereignisobjekt abfragen, zum Beispiel event.target.error.name
oder event.target.error.message
.
AbortError
-
Wenn Sie die Transaktion abbrechen, erhalten alle noch laufenden Anfragen diesen Fehler.
ConstraintError
-
Tritt auf, wenn Sie Daten einfügen, die nicht einer Einschränkung entsprechen, wenn Sie Stores befüllen. Beispielsweise erhalten Sie diesen Fehler, wenn Sie versuchen, einen neuen Schlüssel hinzuzufügen, der bereits im Store existiert.
NotReadableError
-
Wird bei nicht behebbaren Lesefehlern empfangen. Insbesondere signalisiert dieser Fehler, dass sich der Datensatz in der Datenbank befindet, der Wert jedoch nicht abgerufen werden konnte. Weitere Details finden Sie unten unter Vorübergehende und nicht behebbare Lesefehler.
QuotaExceededError
-
Wird empfangen, wenn der Anwendung der Speicherplatz ausgeht. In einigen Fällen fordert der Browser den Benutzer auf, mehr Speicherplatz bereitzustellen. Der Fehler tritt auf, wenn die Anfrage abgelehnt wird. In anderen Fällen verwendet der Browser Heuristiken, um zu bestimmen, ob mehr Speicherplatz zugewiesen werden kann.
UnknownError
-
Wird für vorübergehende Lesefehler empfangen, einschließlich allgemeiner Festplatten-IO-Fehler. Weitere Details finden Sie unten unter Vorübergehende und nicht behebbare Lesefehler.
VersionError
-
Wird empfangen, wenn Sie versuchen, eine Datenbank mit einer niedrigeren Version zu öffnen als der, die bereits vorhanden ist.
Vorübergehende und nicht behebbare Lesefehler
Lesefehler treten auf, wenn eine IndexedDB Werte speichert und anschließend das Lesen dieser Werte fehlschlägt, obwohl die zugehörigen Datensätze noch in der Datenbank vorhanden sind.
Lesefehler können zwei Arten aufweisen — vorübergehend oder nicht behebbar:
Vorübergehende Lesefehler werden durch einen UnknownError
-Typ angezeigt und werden normalerweise durch wenig Speicher verursacht. Für kleine Datenbanken sollte dies kein Problem sein. Um Situationen mit wenig Speicher in großen Datenbanken zu vermeiden, versuchen Sie, den Datenbankzugriff so zu unterteilen, dass nur die Datensätze geladen werden, die Sie zu einem bestimmten Zeitpunkt benötigen, z. B. mithilfe spezifischer Schlüsselbereiche, die sich auf die Suchanfrage eines Benutzers oder einen Mechanismus zur Seitennummerierung beziehen. Wenn ein Fehler aufgrund von zu wenig Speicher auftritt, kann der Benutzer aufgefordert werden, andere Anwendungen zu schließen, um Platz auf Betriebssystemebene freizugeben.
Nicht behebbare Lesefehler werden durch einen NotReadableError
-Typ angezeigt und entstehen durch das Löschen von Quelldateien.
Ein Beispiel: Einige Browser speichern große Werte (z.B. Audio-Dateiblobs für eine Offline-Podcast-App) als separate Dateien, auf die über einen in der Datenbank gespeicherten Verweis zugegriffen wird. Es wurde beobachtet, dass diese separaten Dateien gelöscht werden können, da sie als undurchsichtige Dateien erscheinen, wenn Benutzer Programme zur Speicherplatzrückgewinnung verwenden, was zu nicht behebbaren Lesefehlern führt, wenn anschließend auf die IndexedDB zugegriffen wird.
Mögliche Korrekturmaßnahmen für nicht behebbare Lesefehler könnten beinhalten, den Benutzer zu benachrichtigen, den Eintrag aus der Datenbank zu löschen und dann zu versuchen, die Daten vom Server erneut abzurufen.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn versucht wird, auf die Eigenschaft zuzugreifen, wenn die Anfrage nicht abgeschlossen ist und der Fehler daher nicht verfügbar ist.
Beispiele
Das folgende Beispiel fordert einen bestimmten Datensatz-Titel an, onsuccess
ruft den
zugehörigen Datensatz aus dem IDBObjectStore
ab (verfügbar als
objectStoreTitleRequest.result
), aktualisiert eine Eigenschaft des Datensatzes und legt den
aktualisierten Datensatz wieder im Object Store ab. Am Ende ist auch eine
onerror
-Funktion enthalten, die meldet, was der Fehler war, falls die Anfrage fehlschlägt.
Ein vollständiges funktionierendes Beispiel finden Sie in unserer To-do-Benachrichtigungen-App (Beispiel live ansehen).
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}`,
);
};
Spezifikationen
Specification |
---|
Indexed Database API 3.0> # ref-for-dom-idbrequest-error①> |
Browser-Kompatibilität
Loading…
Siehe auch
- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegung eines Schlüsselbereichs:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursorn:
IDBCursor
- Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).