demo · v138
Quota pressure lab
Write data to localStorage in chunks until a QuotaExceededError fires, then inspect the error object. Chrome 138 makes it a proper DOMException — so instanceof DOMException now works. Compare all three catching patterns side by side.
Estimated localStorage used: — / 5 MB
64 KB
0 KB written
QuotaExceededError caught
error.name—
error.message—
error.code—
instanceof DOMException—
instanceof Error—
error.quota—
error.requested—
Catching patterns
| Pattern | Code | Works pre-138 | Works 138+ | Result |
|---|---|---|---|---|
| instanceof DOMException | e instanceof DOMException |
no | yes | — |
| name check | e.name === 'QuotaExceededError' |
yes | yes | — |
| instanceof QuotaExceededError | e instanceof QuotaExceededError |
no | yes (138+) | — |
| legacy code check | e.code === 22 |
yes | yes | — |
the code
try {
localStorage.setItem('data', hugeString);
} catch (e) {
// Chrome 138+: e is now a real DOMException
if (e instanceof DOMException) {
console.log(e.name); // "QuotaExceededError"
console.log(e.code); // 22
console.log(e.quota); // total quota bytes (where supported)
console.log(e.requested); // bytes that were requested (where supported)
}
// Backward-compatible check (works in all browsers):
if (e.name === 'QuotaExceededError' || e.code === 22) {
showStorageFullUI();
}
}