curso de java

Curso de Java
Desde cero hasta conexiones con bases de datos MySQL

Iniciación: página 28
[ 25, 26, 27, 28, 29, 30, 1 ]

Iniciación al lenguaje Java

Estructuras de control

La estructura de control try…catch

El bloque try…catch es un poco más complejo que el for y el switch, que veremos después, pero el uso combinado con try catch facilita su comprensión por lo que veremos primero éste.
La estructura de control en cuestión se usa para capturar el flujo de datos cuando, por la intervención del usuario o de algún dispositivo externo, sucede un error. Por ejemplo, supongamos una aplicación de fórmulas matemáticas en la que el usuario debe ingresar valores numéricos, lo que normalmente sucede es que el sistema recibirá cadenas que deberán ser convertidas a un tipo útil para las operaciones; pero si el usuario ingresa algo distinto a un dígito o a un operador, el programa fallará. Veamos un ejemplo:


DemoErrorNumero.java

import javax.swing.JOptionPane;

public class DemoErrorNumero {

    String mensaje;

    public DemoErrorNumero() {

    	String valorCadena=JOptionPane.showInputDialog(null,"Escribe un entero");

    	/*El método parseInt() de la clase Integer de la librería lang

    	 *convierte un String en un int

    	 */

    	int valorNumero=Integer.parseInt(valorCadena);

	 JOptionPane.showMessageDialog(null,"El valor es "+valorCadena);

    }    

    public static void main(String[] args) {

        new DemoErrorNumero();

    }

}  

Al ejecutar este programa, si en el primer cuadro de diálogo escribimos un entero, aparecerá un segundo cuadro de diálogo indicando el valor; si, por el contrario, escribimos otra cosa, el programa se detiene y en la ventana de General Output de JCreator se mostrará el siguiente mensaje:


      --------------------Configuration: --------------------

Exception in thread "main" java.lang.NumberFormatException: For input string: "Juanito"

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

    at java.lang.Integer.parseInt(Integer.java:447)

    at java.lang.Integer.parseInt(Integer.java:497)

    at DemoErrorNumero.(DemoErrorNumero.java:6)

    at DemoErrorNumero.main(DemoErrorNumero.java:10)

      

      

La línea que esta subrayada indica cuál fue el error: la cadena ‘Juanito’ (que fue lo que recibió la variable valorCadena) tiene un formato numérico incorrecto; java.lang es la librería en la que está la clase NumberFormatException que es capaz capturar esos errores y se usa con el try…catch como se muestra en el siguiente ejemplo:


DemoTryCatch.java

import javax.swing.JOptionPane;

public class DemoTryCatch {

    String mensaje;

    public DemoTryCatch() {

    	String valorCadena=JOptionPane.showInputDialog(null,"Escribe un entero");

    	try {

	 		int valorNumero=Integer.parseInt(valorCadena);

	 		/*Si lo escrito no es un entero la línea que sigue no se ejecuta, 

	 		 *el programa busca el bloque catch y ejecuta su contenido

	 		 */

	 		mensaje="Gracias";

		}

		catch (NumberFormatException  ex) {//El bloque catch indica el error que captura.

			mensaje="No escribiste un Entero";

		}

		JOptionPane.showMessageDialog(null,mensaje);//El mensaje enviado según el caso

    }    

    public static void main(String[] args) {

        new DemoTryCatch();

    }

}

      

Se debe saber que existe la clase Exception que captura todos los errores, y que derivadas de ella hay muchas otras para atender faltas específicas, como el caso que acabamos de probar. Más adelante en este curso, veremos algunas otras excepciones.

[ Anterior | Siguiente ]