- IndexedDB Tutorial
- IndexedDB - Home
- IndexedDB - Introduction
- IndexedDB - Installation
- IndexedDB - Connection
- IndexedDB - Object Stores
- IndexedDB - Creating Data
- IndexedDB - Reading Data
- IndexedDB - Updating Data
- IndexedDB - Deleting Data
- Using getAll() Functions
- IndexedDB - Indexes
- IndexedDB - Ranges
- IndexedDB - Transactions
- IndexedDB - Error Handling
- IndexedDB - Searching
- IndexedDB - Cursors
- IndexedDB - Promise Wrapper
- IndexedDB - Ecmascript Binding
- IndexedDB Useful Resources
- IndexedDB - Quick Guide
- IndexedDB - Useful Resources
- IndexedDB - Discussion
IndexedDB - 错误处理
并非我们编写的所有请求都会返回输出。这可能是由于 -
- 编写代码时可能出现的错误。
- 如果超出存储限制。
- 如果交易失败等。
在失败的请求中,事务被取消,并且所有更改都被恢复。但有时我们希望在不恢复所有更改的情况下处理失败,因此我们使用request.onerror处理程序。它可以通过调用event.preventDefault()来防止事务中止。
例子
下面给出了一个显示 IndexedDB 中错误处理的示例 -
<!DOCTYPE html> <html lang="en"> <head> <title>IndexedDB</title> </head> <body> <script> const request = indexedDB.open("DATABASE", 1); request.onsuccess = function (){ document.write("database creation success") } request.onerror = function(event){ document.write("Database not created " + event.target.errorCode); } </script> </body> </html>
输出
Database not created undefined
我们可以使用 db.onerror 处理程序来捕获错误。
db.onerror = function(event) { let request = event.target; document.write("Error is found", request.error); };
当具有相同 id 的对象已经存在时,会发生约束错误。但有时,如果任何错误已完全处理并且我们不想报告它,我们可以通过在 request.onerror 中使用event.stopPropagation()来停止冒泡。
request.onerror = function(event) { if (request.error.name == "ConstraintError") { document.write("id already exists"); event.preventDefault(); event.stopPropagation(); } }