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(); 
   }
}
广告