- IndexedDB 教程
- IndexedDB - 首页
- IndexedDB - 简介
- IndexedDB - 安装
- IndexedDB - 连接
- IndexedDB - 对象存储
- IndexedDB - 创建数据
- IndexedDB - 读取数据
- IndexedDB - 更新数据
- IndexedDB - 删除数据
- 使用 getAll() 函数
- IndexedDB - 索引
- IndexedDB - 范围
- IndexedDB - 事务
- IndexedDB - 错误处理
- IndexedDB - 搜索
- IndexedDB - 游标
- IndexedDB - Promise 包装
- IndexedDB - Ecmascript 绑定
- IndexedDB 实用资源
- IndexedDB - 快速指南
- IndexedDB - 实用资源
- IndexedDB - 讨论
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(); } }
广告