Tutorial JAVA (XIV)


java.jpg

Uno de los aspectos más importantes de un programa y probablemente donde mas tiempo se emplea es la gestión de errores. La depuración de un programa siempre es un trabajo tedioso.

Dentro del lenguaje JAVA al igual que en las nuevas ediciones de Visual Studio de Microsoft la palabra error ha desaparecido y se ha sustituido por la palabra Excepcion. Podemos decir que una Excepción es el resultado de un comportamiento anormal de un programa.

Dentro de JAVA las Excepciones se procesan en sentencias Try Catch. Esta sentencia vista dentro del código de un programa tendría una apariencia similar a:

  1. Try{
  2. Bloque de sentencias que se ejecutan en circunstancias normales
  3. }catch(ClasedeExcepcion1 e){Bloque que se ejecuta si se ha producido una Excepción de la
  4. clase Excepcion1
  5. }catch(ClasedeExcepcion2 e){Bloque que se ejecuta si se ha producido una Excepción de la
  6. clase Excepcion2
  7. }catch(Excepcion e){Bloque que se ejecuta si se ha producido una Excepción no capturada
  8. anteriormente
  9. }finally{Bloque de sentencias que se ejecutara siempre}

En una forma mas concreta podríamos por ejemplo ver este código. Abriremos nuestra aplicación Eclipse y crearemos un nuevo proyecto llamado diez, al que añadiremos una clase llamada gestionerror.

  1. import java.util.Scanner;
  2. public class gestionerror {
  3. //crearemos dos métodos para guardar dos números
  4. private int NumeroUno;
  5. private int NumeroDos;
  6. public int getNumeroUno() {
  7. return NumeroUno;
  8. }
  9. public void setNumeroUno(int numeroUno) {
  10. NumeroUno = numeroUno;
  11. }
  12. public int getNumeroDos() {
  13. return NumeroDos;
  14. }
  15. public void setNumeroDos(int numeroDos) {
  16. NumeroDos = numeroDos;
  17. }
  18. public void capturavalores(){
  19. System.out.println("Indica un numero");
  20. //creamos una variable scanner para capturar los numeros.
  21. Scanner sc=new Scanner(System.in);
  22. setNumeroUno(sc.nextInt());
  23. System.out.println("Indica otro numero");
  24. setNumeroDos(sc.nextInt());
  25. //abrimos nuestro control de excepciones
  26. try{
  27. int Resultado;
  28. Resultado= getNumeroUno() / getNumeroDos();
  29. System.out.println(Resultado);
  30. }
  31. catch (ArithmeticException error){
  32. //nos dira que error es
  33. System.out.println(error.getMessage());
  34. }
  35. finally{
  36. System.out.println("Esta linea siempre se ejecuta");
  37. }
  38. }
  39. }

También deberemos crear una clase con un método main para poder ejecutar el ejemplo. Añadiremos una clase llamada TestExcepcion y seleccionaremos la opción public static void main(String[] args).

  1. public class TestExcepcion {
  2. public static void main(String[] args) {
  3. gestionerror MiError=new gestionerror();
  4. MiError.capturavalores();
  5. }
  6. }

Si ejecutamos el programa y le introducimos por ejemplo un 6 y un 3 el resultado será simplemente 2 y el texto "Esta línea se ejecuta siempre" que hemos puesto en la parte de finally.

primeraoperacion.JPG

Pero en cambio si ponemos los números 6 y 0 el resultado será de ERROR DIVISIÓN POR CERO. Este texto proviene de la sentencia System.out.println(error.getMessage());

segundaoperacion.JPG

De este modo capturamos el error pero no le damos solución. En el apartado catch deberíamos poner algún código que gestionara el error de modo que no solo nos lo mostrara. Podríamos por ejemplo omitir la división y mostrar como resultado el primer numero que se introdujo.

  1. import java.util.Scanner;
  2. public class gestionerror {
  3. //crearemos dos metodos para guardar dos numeros
  4. private int NumeroUno;
  5. private int NumeroDos;
  6. public int getNumeroUno() {
  7. return NumeroUno;
  8. }
  9. public void setNumeroUno(int numeroUno) {
  10. NumeroUno = numeroUno;
  11. }
  12. public int getNumeroDos() {
  13. return NumeroDos;
  14. }
  15. public void setNumeroDos(int numeroDos) {
  16. NumeroDos = numeroDos;
  17. }
  18. public void capturavalores(){
  19. System.out.println("Indica un numero");
  20. //creamos una variable scanner para capturar los numeros.
  21. Scanner sc=new Scanner(System.in);
  22. setNumeroUno(sc.nextInt());
  23. System.out.println("Indica otro numero");
  24. setNumeroDos(sc.nextInt());
  25. int Resultado;
  26. //abrimos nuestro control de excepciones
  27. try{
  28. Resultado= getNumeroUno() / getNumeroDos();
  29. System.out.println(Resultado);
  30. }
  31. catch (ArithmeticException error){
  32. //nos dira que error es
  33. //System.out.println(error.getMessage());
  34. if (getNumeroDos()==0){
  35. Resultado=getNumeroUno();
  36. System.out.println(Resultado);
  37. }
  38. }
  39. finally{
  40. System.out.println("Esta linea siempre se ejecuta");
  41. }
  42. }
  43. }
terceraoperacion.JPG

Es muy importante que todas aquellas operaciones que puedan provocar un error estén bien gestionadas. Operaciones como abrir y cerrar conexiones con bases de datos, leer o escribir en ficheros, mandar documentos a imprimir y un largo etc. deben estar bien gestionadas ya que se corre el riesgo de perder datos de forma irremediable. En cualquiera de estos casos siempre es interesante aprovechar el espacio de finally para cerrar una conexión o un fichero, es decir realizar operaciones que sabemos que es preciso que se realicen ocurra un error o no.

Las clases mas comunes de excepciones son: ArithmeticException (excepción en una operación aritmética), ArrayStoreException y NegativeArraySizeException(excepciones en una operación de uso de array), NullPointerException(excepción por una referencia a un objeto nulo), SecurityEsception(excepción en el sistema de seguridad), EOFException(excepción por llegar al final de un fichero), IOExcepcion(excepción en un proceso de entrada y salida), FileNotFoundException(excepción por no encontrar un fichero) y NumberFormatException(excepción en la conversión de un texto a un formato numérico).

En un próximo post veremos como provocar nosotros mismos los errores para prevenirlos.

Enlaces interesantes

  • Eclipse
  • Página oficial de Java en español





Opiniones sobre Tutorial JAVA (XIV)

Hace 14 años y 6 meses

deseo aprender java


Hace 14 años y 5 meses

como hago para el texto me aparesca por completo en la pantalla de la parte izquierda no aparece los primeros caracteres


Hace 13 años

mE SIRVIO DE MUCHO EL PROGRAMA GRACIAS



Opina sobre Tutorial JAVA (XIV)

Nombre:

Tu email:

Página web (si tienes):

Opinar:

Escoge el recuadro negro: para evitar spam