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