Indexeddb 简明教程
IndexedDB - Error Handling
我们编写的并非所有请求都会返回输出。这可能是由于 -
-
编写代码时可能出错。
-
如果存储限制已超。
-
如果事务失败等。
在失败的请求中,事务被取消,并且所有更改都被恢复。但有时我们希望在不恢复所有更改的情况下处理失败,为此可使用 request.onerror 处理程序。它可以通过调用 event.preventDefault() 来防止事务中止。
Example
以下给出了在 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>
Output
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();
}
}