Aplicación de tipos de excepción en JavaScript
Supongamos que tenemos una función que acepta como parámetro JSON con un array de datos y escribe cada elemento de este array en el almacenamiento local:
function saveData(json) {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
}
En esta función, una situación excepcional puede ocurrir en dos lugares: durante el análisis del JSON y al intentar guardar los datos en el almacenamiento local.
Supongamos que, por ejemplo, como manejo de errores decidimos mostrar algún mensaje sobre los problemas:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
alert('algunos problemas');
}
Nuestro mensaje está bien, pero no diferencia los problemas que surgen. Sería más lógico mostrar un mensaje sobre quė problema específico ocurrió.
Para ello, distingamos los errores que surgen por su nombre:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('se acabó el espacio en el almacenamiento');
}
if (error.name == 'SyntaxError') {
alert('JSON incorrecto');
}
}
Copie el código de mi función saveData,
y luego, sin mirar mi código, implemente
el manejo de errores que he descrito.
Cree deliberadamente y por turnos situaciones excepcionales
que pueden ocurrir en la función
saveData.