Aplicação de tipos de exceção em JavaScript
Suponha que temos uma função que aceita como parâmetro um JSON com um array de dados e grava cada elemento desse array no armazenamento local:
function saveData(json) {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
}
Nesta função, uma situação excepcional pode ocorrer em dois lugares: ao analisar o JSON e ao tentar salvar os dados no armazenamento local.
Suponha, por exemplo, que para o tratamento de erros decidimos exibir uma mensagem sobre os problemas:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
alert('alguns problemas');
}
Nossa mensagem é boa, claro, mas ela não diferencia os problemas que surgiram. Seria mais lógico exibir uma mensagem sobre qual problema específico ocorreu.
Para isso, vamos distinguir os erros que ocorrem pelo nome:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('espaço de armazenamento esgotado');
}
if (error.name == 'SyntaxError') {
alert('JSON inválido');
}
}
Copie o código da minha função saveData,
e então, sem olhar o meu código, implemente
o tratamento de erros que descrevi.
Propositalmente, crie sequencialmente situações excepcionais
que podem ocorrer na função
saveData.