Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Excepciones en Java, Diapositivas de Programación Java

Como usar las excepciones en java y que son

Tipo: Diapositivas

2018/2019

Subido el 03/12/2019

david-santos-bsh
david-santos-bsh 🇪🇸

9 documentos

1 / 17

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Projecte de Programació
Projecte de Programació
Excepciones en Java
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡Descarga Excepciones en Java y más Diapositivas en PDF de Programación Java solo en Docsity!

Projecte de Programació

Excepciones en Java

Prueba de Programas: Java

Java admite un tratamiento de errores y excepciones

mediante las clases que heredan de la clase Throwable ,

que es la clase encargada de gestionar las situaciones

excepcionales que se producen durante la ejecución de un

programa

Hay dos tipos de situaciones excepcionales:

  • Errores ( java.lang.Error , subclase de java.lang.Throwable )
  • Excepciones ( java.lang.Exception , subclase de java.lang.Throwable )

Un buen programa debe gestionar correctamente todas o la

mayor parte de estas situaciones que se puedan producir

Prueba de Programas: Java

● Errores

( java.lang.Error , subclase de java.lang.Throwable ) En Java, los errores se refieren a situaciones que no deberían pasar nunca y que el programa ha de abortar: errores de compilación, del sistema o de la JVM Ejemplos:

  • La JVM no puede continuar por falta de recursos
  • Un .class tiene problemas en su contenido
  • Problemas de incompatibilidades entre clases dependientes
  • Problemas serios de entrada/salida
  • Un thread muere sin razón Estos errores son irrecuperables, no dependen del programador y no tiene sentido tratarlos. Normalmente el programa se ha de parar

Prueba de Programas: Java

● Excepciones

( java.lang.Exception , subclase de java.lang.Throwable ) En Java, las excepciones se refieren a situaciones extraordinarias que hay que tratar de manera especial. 2 tipos: 1 ) Excepciones implícitas: son las RunTimeException , relacionadas con errores de programación, p.ej. NullPointerException , IndexOutOfBoundsException , ArithmeticException , ClassCastException , etc. El propio Java durante la ejecución chequea y lanza automáticamente las excepciones que derivan de RunTimeException Sería posible capturar estos tipos de errores, pero el código se complicaría excesivamente si se necesitara chequearlos continuamente.

Errores y excepciones implícitas se denominan unchecked exceptions (no

tienen que estar declaradas en los throws de los métodos)

Prueba de Programas: Java

● Excepciones

Una excepción en un programa Java ha de ser considerada de alguna

forma. De hecho, el compilador nos obliga: se denominan checked

exceptions

Imaginemos que estamos programando un método m() que invoca otro

método, y éste ejecuta una operación susceptible de generar una

excepción de nombre NomExcepción

Entonces el método que estamos programando, m() , puede tratar o no la

excepción

Prueba de Programas: Java

● Excepciones

Supongamos que m() NO trata la excepción NomExcepción

  • En este caso, en la cabecera de m() hay que poner throws NomExcepción (o el nombre de cualquiera de las superclases de NomExcepción)
  • No tratarla significa si se produce una excepción con este nombre (o cualquiera de sus subclases), la excepción se pasa al método que la ha llamado Si no se quiere tratar NINGUNA excepción, basta con poner la cláusula throws Exception (la clase padre de todas las excepciones) Si la excepción llega al main el programa aborta

Prueba de Programas: Java

● Excepciones

Ejemplo de NO tratamiento de excepciones: public void metodoExcepcion() throws Exception { // FileNotFoundException BufferedReader in = new BufferedReader(new FileReader("noexiste")); ... }

Prueba de Programas: Java

● Excepciones: Ejemplo de tratamiento de excepciones:

public void metodoExcepcion() { try { int[] a = new int[3]; // IndexOutOfBoundsException a[5]=10; // FileNotFoundException BufferedReader in = new BufferedReader(new FileReader("noexiste.txt")); ... } catch (IndexOutOfBoundsException e) { System.out.println(" *** IndexOutOfBoundsException... "); } catch (FileNotFoundException e) { System.out.println(" *** getMessage(): " + e.getMessage()); System.out.println(" *** toString(): " + e.toString()); e.printStackTrace(); } finally { System.out.println(" *** finally... "); } }

Prueba de Programas: Java

● Excepciones. Creación de excepciones propias

Hay que hacer una clase que herede de Exception (o de una de sus clases derivadas, la que se adapte mejor) En ella suele haber una constructora sin argumentos y una constructora con una String de argumento (el mensaje explicativo de la excepción). Ambas constructoras han de invocar a la constructora de la clase padre class myException extends Exception { public myException() { super(); } public myException(String s) { super(s); } }

Prueba de Programas: Java

● Excepciones. Creación de excepciones propias

Ejemplo: crear una excepción propia para proporcionar más información class ExcepFichero extends Exception { public String filename; public ExcepFichero(String s) { super(“Error en fichero “ + s + “, formato incorrecto”); filename = s; } public String toString() { return “Excepción Fichero “ + filename; } }

Prueba de Programas: Java

● Excepciones y Herencia

Si un método redefine otro de una superclase que utiliza throws , no tiene por qué lanzar las mismas excepciones de la clase padre. Puede lanzar las mismas o menos, pero NO puede lanzar nuevas excepciones ni excepciones de una clase más general Imprescindible para que se mantenga la regla de compatibilidad de tipos del polimorfismo de subtipo

Prueba de Programas: Java

● La instrucción assert

Se puede utilizar assert para depurar programas Java Hay que insertar en el código: assert ExpresionBooleana; assert ExpresionBooleana1 : Expresion2; Cuando se ejecuta la instrucción, se evalúa ExpresionBooleana. Si el resultado es falso, el sistema genera un AssertionError con un mensaje que contendrá el resultado de haber evaluado Expresion2 (si la hay) Por defecto la JVM NO ejecuta los assert , hay que invocarla con la opción -ea o --enableassertions