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