viernes, 19 de abril de 2013
Java: Manejo de excepciones con Try/Catch/Finally.
Francisco
19:51
excepciones
,
finally
,
integer to String
,
java
,
parseInt
,
por: Francisco Vargas
,
programación java
,
string
,
try catch
,
vector
3 comentarios
:
Introducción
Las excepciones vienen siendo fallos que se pueden controlar, por ejemplo la división por cero, esto no es un error, sino simplemente es algo que matemáticamente no está definido. En java existen formas de controlar estas excepciones usando los try/catch, en esta entrada se va a explicar como funcionan y como se programan estos try/catch. Además de algunos ejemplo en los cuales nos vendrían a ayudar, a que nuestro programa no se venga abajo por pequeños inconvenientes a la hora de no validar en nuestro código.
Desarrollo
Antes que todo en Java existen errores y excepciones acá les dejo una imagen con algunos (no son todos debido a que hay clases específicas que traen sus propios manejos de excepciones como java.text) errores y excepciones tomada de : http://leo.ugr.es/J2ME/CLDC/transjava/node10.html
Los componentes del try/catch/finally se explican a continuación, dentro del bloque de try se escribe el código inconsistente, en otras palabra, el código que puede llevarnos a tener una excepción, luego viene el bloque catch, la función de este es capturar las excepciones de nuestro código en el try, pueden existir más de una sentencia catch en el conjunto, por ejemplo una para errores aritméticos y otra para un puntero nulo , por último pero no menos importante el finally, el código de este bloque se ejecutará sin importar que haya sucedido en los bloques try y catch.
Para programar esto en Java, se sigue esta estructura base:
try { //Código inconsistente } catch (Exception e) { //En caso de una excepción } finally{ //Código que siempre se ejecutará }
Ahora realizaremos unos ejemplo para entender un poco mejor como funciona este manejo de excepciones.
Ejemplo #1: Crear una Mascara que aprendimos en : maskformatter y jformattedtextfield
MaskFormatter mascara = new MaskFormatter(); try { mascara = new MaskFormatter("?#####"); } catch (ParseException e) { //Por lo general uno coloca esto, lo que //hace es mostrar el mensaje de error e.printStackTrace(); }
Ejemplo #2: La validación de una cadena para saber si es un número:
//Variable que nos dirá si es un número o no boolean entero = true; //Cadena que evaluaremos String cadena = "ABC"; try{ //Parseo de String a Integer Integer.parseInt(cadena); }catch(NumberFormatException nfe){ //En caso de excepción JOptionPane.showMessageDialog(null, "Error " + nfe.getLocalizedMessage()); entero = false; } finally{ //Mostramos el resultado de la evaluación JOptionPane.showMessageDialog(null, entero); }
Ejemplo #3: Este ejemplo podría parecerles algo tonto pero bueno:
//Declaramos un vector String String[] vector = {"1","2"}; //Recorremos ese vector, pero ATENCIÓN, lo recorremos //hasta una posición más de la total (vector.length + 1) for (int i = 0; i < vector.length + 1; i++) { try { //Codigo inconsistente System.out.println(vector[i]); } catch (ArrayIndexOutOfBoundsException e) { //Mensaje de excepción JOptionPane.showMessageDialog(null, "Se salió del vector"); } }
Conclusiones
El manejo de excepciones es una parte muy importante al momento de realizar aplicaciones, sin importar el lenguaje.
Java brinda esta estructura para un manejo adecuado y ordenado de las excepciones.
Existen muchas clases que tienen excepciones propias por lo cual es nada más investigar cuales son y cuando se producen.
Suscribirse a:
Enviar comentarios
(
Atom
)
he vale francisco muy bueno... pero tengo una duda como aria para la excepcion de una letra es decir en el switc siempre lo manejo con le tras pero si la opcion que el usuario igresara no es una letra como ao esa excepcion:?
ResponderEliminarpor ejemplo digamos yo creo este switch
Eliminarswitch (key) {
case a:
// hago algo
break;
// casos de b a y
case z
break
default:
// si no era ninguno de los anteriores hago algo por ejemplo un mensaje de error
break;
}
Otra posibilidad es decir
EliminarmiChar es una letra minuscula que digita el usuario
if (miChar >= 'a' && miChar <= 'z'){
System.out.println('a' + 0 + " " + ('z' + 0));
} else {
System.out.println("No es una letra entre a - z")
}