Cómo manejar errores con try catch en JavaScript

Atrapar y manejar errores con try catch en JavaScript es una tarea fundamental, ya que nos ayuda a tener un código saludable y realizar validaciones avanzadas. Para hacer esta tarea utilizamos los bloques try-catch y en este artículo te explico cómo lograrlo. Aquí tienes un ejemplo, pero sigue leyendo para aprender a utilizarlo como todo un maestro del código.

try
{
    // escribe aquí el código que quieres proteger
    var valor = 100 / noexiste;
}
catch(ex)
{
    // escribe aquí lo que harás si se presenta un error
    alert(ex);
}

Esta es la tabla de contenido para este artículo:

Sintaxis

try { … } catch (ex) { … }

Funciona de la siguiente manera:

  • try es el bloque donde ponemos el código que deseamos proteger.
  • catch es el código que se encargará de hacer algo con la información del error.

Cómo usar try catch en JavaScript

Supongamos que tenemos esta rutina:

var valor = 100 / noexiste;

A simple vista parece inocente pero si intentamos ejecutarla obtenemos un error, porque la variable “noexiste” pues, bueno, no existe o bien no está definida.

El problema en JavaScript con estos errores o excepciones es que en vez de obtener un mensaje con la información, lo que ocurre es que la ejecución del script se detiene. Es decir, pareciera que nuestro programa no funciona.

Si ponemos ese código dentro de un bloque try-catch como el que sigue, obtendremos un mensaje con la información del error.

try
{
    var valor = 100 / noexiste;
}
catch(ex)
{
    alert(ex);
}

Observa que ex es el parámetro donde recibimos la información del error. Aquí lo utilizamos con un alert() para que nos muestre en pantalla esta información del error.

Cómo invocar un error personalizado

No es la práctica recomendada, pero en ocasiones es necesario generar un error para detener el programa y alertar al usuario sobre un conflicto. Para lograrlo usamos throw.

Considera el siguiente ejemplo:

let cliente = {
	id: 10,
	saldo: 0,
	retirar:
	function (cantidad) {
		if (this.saldo < cantidad)
		{
			throw "El cliente no cuenta con el saldo suficiente";
		}
		this.saldo -= cantidad;
	}
};

Tenemos un objeto con la información de un cliente. Este objeto tiene un método que se llama retirar, que utilizamos para restar un valor del saldo disponible. En este código hicimos que al intentar restar un valor y el saldo no fuera suficiente, lanzamos un error indicando que el cliente no tiene el saldo requerido. Esta es una forma práctica para implementar validaciones a nivel de información.

Para utilizar este código, necesitaremos escribir una rutina como la siguiente:

try {
	cliente.retirar(100);
	alert("El retiro se realizó con éxito, tu nuevo saldo disponible es: " + cliente.saldo);
} 
catch (ex) {
	alert(ex);
}

Observa que, dado que el cliente tiene un saldo de CERO, el resultado es un mensaje que dice “El cliente no cuenta con el saldo suficiente”.

Ahora bien, podríamos reescribir esta rutina de la siguiente manera:

cliente = {
	id: 0,
	saldo: 0,
	abonar:
	function (cantidad) {
		this.saldo += cantidad;
	},
	retirar:
	function (cantidad) {
		if (this.saldo <= 0)
		{
			throw "El cliente no cuenta con el saldo suficiente";
		}
		this.saldo -= cantidad;
	}
};

try {
	cliente.abonar(350);
	cliente.retirar(100);
	alert("El retiro se realizó con éxito, tu nuevo saldo disponible es: " + cliente.saldo);
} 
catch (ex) {
	alert(ex);
}

Observa que en la línea 4 agregamos un método que se llama abonar(), el cual utilizaremos para incrementar el saldo disponible. Finalmente, en la línea 19 agregamos $350 pesos al saldo, por tanto el mensaje que veremos en pantalla será “El retiro se realizó con éxito, tu nuevo saldo disponible es: 250”.

Conclusión

En este artículo utilizamos los bloques try-catch para proteger nuestro código contra errores, y aprendimos a usar la sentencia throw para invocar errores personalizados, de tal manera que podamos mejorar nuestro código con validaciones avanzadas.

Déjame un comentario si tienes alguna duda con el material y visita nuestra sección de JavaScript para aprender a utilizar otras herramientas o aprender comandos interesantes.


Posted

in

by

Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *