SlideShare una empresa de Scribd logo
1 de 29
4. Excepciones
             ¿Qué son las excepciones?
             Detección de errores
             Manejo de excepciones en Java
             Finally y relanzamiento de excepciones
             Jerarquía de excepciones
             Excepciones implícitas y explícitas
             Obtención de información de una excepción
             Ejemplos y ejercicios propuestos
Programación III                Tema 4 - Excepciones
¿Qué son las excepciones?
                     (1/2)
   • Si una operación no puede completarse
     debido a un error, el programa deberá:
           – Volver a un estado estable y permitir otras
             operaciones.
           – Intentar guardar el trabajo y finalizar.
   • Esto es difícil debido a que generalmente, el
     código que detecta el error no es el que
     puede realizar dichas tareas.
   • Entonces, el que detecta el error debe
     informar al que pueda manejarlo.
Programación III                Tema 4 - Excepciones
¿Qué son las excepciones?
   •                            (2)
         La solución más habitual a esto son los retornos de códigos
         de error. Esto presenta una serie de inconvenientes:
           – No siempre queda sitio para códigos de error (p. ej.: getchar).
           – No se garantiza que se vayan a consultar. No es obligatorio recoger
             un valor de retorno.
           – Si se contemplan todos los errores, el código crece demasiado.
           – La lógica del programa queda oscurecida.
           – No sirven en los constructores donde no se devuelve nada.
   • En definitiva, hacen que el tratamiento de errores sea
     complejo y que a menudo no se traten todos los errores.
   • Java ofrece una solución, otra forma de tratar con los
     errores: las excepciones .
   • Definición:
           – Una excepción es un evento excepcional que ocurre durante la
             ejecución del programa y que interrumpe el flujo normal de las
             sentencias.
           – Es un mecanismo de control de flujo generalmente usado para
             tratamiento de situaciones EXCEPCIONALES (como errores por
             ejemplo).
Programación III                        Tema 4 - Excepciones
Detección de errores (1/2)
   • Una condición excepcional es aquella que impide la
     continuación de una operación.
   • En Java, cuando ocurre algo así, se lanza una
     excepción (throw) para que alguien que sepa
     manejarla la trate en un contexto superior.
           – Por ejemplo:
                     if ( “error de CRC” )
                           throw new IOException();
           – Con la palabra THROW se lanza una excepción.
                   • Cuando ocurre esto, se interrumpe la ejecución habitual del
                     método y se lanza un objeto que facilite información sobre el
                     error ocurrido.
                   • Normalmente se utilizará una clase diferente para cada tipo de
                     error. Dicha clase deberá contener toda la información necesaria
                     para tratar de forma correcta dicho error y conocer lo ocurrido.


Programación III                            Tema 4 - Excepciones
Detección de errores (2/2)
   • Java obliga a que un método informe de las excepciones
     (explícitas) que puede lanzar.
           – Un método no sólo tiene que decir qué devuelve si todo va bien,
             también debe indicar qué puede fallar.
           – Un método especifica las excepciones que se pueden producir en él
             mediante la palabra THROWS en la declaración del método.
           – Por ejemplo:
               void f() throws EOFException,
             FileNotFoundException
               {
                      if( ... )
                              throw new EOFException();
                      if( ... )
                              throw new FileNotFoundException();
               }


Programación III                       Tema 4 - Excepciones
Manejo de excepciones
                             (1/6)
   • Una vez que se detecta un error hace falta indicar quién se
     encarga de tratarlo.
           – Para manejar excepciones hay que utilizar las palabras clave TRY y
             CATCH.
   • El TRY delimita el grupo de sentencias que pueden producir
     excepciones.
   • El bloque CATCH es el lugar al que se transfiere el control si
     alguna de las operaciones produce una excepción.
                   try{
                          // Operaciones que pueden “fallar”: que
                          // pueden producir alguna excepción.
                   }
                   catch( <tipoDeExcepción> ref ){
                         // Tratamiento de esa excepción
                   }

Programación III                        Tema 4 - Excepciones
Manejo de excepciones
                             (2/6)
   • Por ejemplo:
                   try{
                          a.abreFichero();
                          a.leeCabecera();
                          a.actualizaDatos();
               }
               catch( IOException ref ){
                       System.out.println( “Error de E/S” );
               }
           – Si alguna de las operaciones del bloque produce una excepción, se
             interrumpe el bloque try y se ejecuta el catch. Al finalizar éste, se
             continúa normalmente.
           – Si no se produce ninguna excepción el bloque catch se ignora.




Programación III                         Tema 4 - Excepciones
Manejo de excepciones
                             (3/6)
   • Un bloque try puede tener varios catch asociados, uno para cada tipo
     de excepción que se pueda producir.
           – Por ejemplo:
                   try{
                          a.abreFichero();
                          a.leeCabecera();
                          a.actualizaDatos();
                   }
                   catch( FileNotFoundException ref ){
                         System.out.println( “Error de apertura” );
                   }
                   catch( IOException ref ){
                         System.out.println( “Error de E/S” );
                   }




Programación III                      Tema 4 - Excepciones
Manejo de excepciones
                                  (4/6)
   •     Si se produce una excepción que no se corresponde con ningún catch indicado, la excepción se propaga
         hacia atrás en la secuencia de invocaciones hasta encontrar un catch adecuado.
                   •   Por ejemplo:


                   void f1( int accion ) throws EOFException
                   {
                           try{
                                    if( accion == 1 )
                                            throw new FileNotFoundException();
                                    else if( accion == 2 )
                                            throw new EOFException();
                           }
                           catch( FileNotFoundException e ){
                                    System.out.println( “Error corregido” );
                           }
                           System.out.println(“Finalización normal de f1”);
                   }
                   void f2( int accion )
                   {
                           try{
                                    f1( accion ):
                           }
                           catch( EOFException e ){
                                    System.out.println( “Error corregido” );
                   }
                   System.out.println(“Finalización normal de f2”);
         }
Programación III                                   Tema 4 - Excepciones
Manejo de excepciones
                           (5/6)
           – ¿ Qué pasa si se llama a f2 pasándole los valores
             1 ó 2 para el parámetro acción? ¿En qué método
             se producen las excepciones y en cuál se tratan?
   • Cuando se invoca a un método que lanza
     excepciones, es obligatorio:
           – Que se maneje el error (en un catch).
           – O que se indique mediante throws su
             propagación.




Programación III                Tema 4 - Excepciones
Manejo de excepciones
                                (6/6)
   •     Por ejemplo:

                   void f1() throws IOException
                   {
                           ...
                   }
                   //ALTERNATIVA 1: TRATAR EL ERROR EN CUANTO SE PRODUCE
                   void f2()
                   {
                           try{
                                    f1()
                           }
                           catch( IOException e ){
                                    // Tratamiento del error
                           }
                   }
                   //ALTERNATIVA 2: SE CONTINUA PROPAGANDO EL ERROR
                   //PARA QUE LO GESTIONE OTRO METODO
                   void f2() throws IOException
                   {
                           f1();
                   }




Programación III                             Tema 4 - Excepciones
Finally (1/3)
   • Puede haber ocasiones en que se desea realizar alguna
     operación tanto si se producen excepciones como si no.
   • Dichas operaciones se pueden situar dentro de un bloque
     FINALLY.
         try{
                // Operaciones con posibles
     excepciones
         }
         catch( <tipoDeExcepcion> ref ){
                // Tratamiento de la excepción
         }
         finally{
                // Operaciones comunes
         }

Programación III             Tema 4 - Excepciones
Finally (2/3)
   •     Ejemplo:
               class Recurso
         {
               void reserva() throws        ExceptionA, ExceptionB,

                   ExceptionC { ... }
                   void libera() { ... }
         }
                   class Ejemplo
                   {
                           void prueba()
                           {
                                   Recurso recurso = new Recurso();
                                   try{
                                            recurso.reserva();
                                            // Operaciones con posibles excepciones
                                   }
                                   catch( ExceptionA a ){// Tratamiento del error}
                                   catch( ExceptionB b ){// Tratamiento del error}
                                   catch( ExceptionC c ){// Tratamiento del error}
                                   finally{
                                            recurso.libera();
                                   }
                           }
                   }

Programación III                             Tema 4 - Excepciones
Finally (3/3)

   • Si no se produce ninguna excepción, se
     ejecutarán el bloque try y el finally.
   • En cambio, si se produce alguna excepción:
           – Si es atrapada por un catch del mismo try, se
             ejecuta éste y luego el finally. La ejecución
             continúa después del finally con normalidad.
           – Si no es atrapada, se ejecuta el finally y la
             excepción se propaga al contexto anterior.




Programación III                Tema 4 - Excepciones
Relanzamiento de
                  excepciones
   • Hay situaciones en las que interesa relanzar
     una excepción ya atrapada.
   • Interesa dar un tratamiento determinado a
     una excepción pero también interesa seguir
     propagándola hacia arriba para que en un
     contexto superior se siga teniendo constancia
     de ella.
                   catch( Exception e ){
                       // Tratar excepción y propagar
                       throw e;
                   }
Programación III                 Tema 4 - Excepciones
Jerarquía de excepciones
                      (1/4)
   • Toda excepción debe ser una instancia de
     una clase derivada de la clase Throwable.
   • De ella hereda una serie de métodos que dan
     información sobre cada excepción.
           – getMessage
           – toString
           – printStackTrace (imprime en la salida estándar un
             volcado de la pila de llamadas).



Programación III                Tema 4 - Excepciones
Jerarquía de excepciones
                             (2/4)
   • La jerarquía de excepciones en Java es la siguiente:




Programación III              Tema 4 - Excepciones
Jerarquía de excepciones
                              (3/4)
           – Las clases derivadas de Error describen errores
             internos de la JVM (errores serios) que la
             aplicación no debería intentar gestionar.
                   • Ejemplos: OutOfMemoryError, StackOverflowError,
                     etc.
           – Los programas en Java trabajarán con las
             excepciones de la rama Exception. Estas
             excepciones se clasifican en:
                      – Explícitas: las que derivan directamente de Exception.
                      – Implícitas: las que derivan de RunTimeException.




Programación III                          Tema 4 - Excepciones
Jerarquía de excepciones
                               (4/4)
           – Se utilizan las RunTimeException (implícitas) para indicar
             un error de programación = interno. Si se produce una
             excepción de este tipo hay que arreglar el código.
                   • Por ejemplo: un cast incorrecto, acceso a un array fuera de
                     rango, uso de un puntero null, etc.
           – El resto de las Exception (explícitas) indican que ha
             ocurrido algún error ajeno al programa.
                   • Por ejemplo: un error de E/S, error de conexión, etc.
   • Los métodos deben declarar (throws) sólo las
     excepciones explícitas.
   • Las implícitas no hay que declararlas (throws). El
     error suele ser del programador por lo que no se
     recomienda su tratamiento, sino corregir el código
     para que no se produzcan.
Programación III                            Tema 4 - Excepciones
Creación de excepciones
                            (1/5)
   • En Java se pueden crear nuevas clases de
     Excepciones.
           – La única condición es que la clase derive de la clase
             Throwable o de alguna derivada.
   • En la práctica, normalmente derivará:
           – de RuntimeException si se desea notificar un error de
             programación.
           – de Exception en cualquier otro caso.
   • Cuestiones
           – En un método que tiene como parámetro un entero
             entre 1 y 12 se recibe un 14 ¿Qué tipo de excepción se
             crearía para notificarlo?
           – Si un método para listar Clientes por impresora se
             encuentra con que deja de responder, ¿qué tipo de
             excepción debería crear?
Programación III                    Tema 4 - Excepciones
Creación de excepciones
                                (2/5)
   •     Ejemplo de creación y lanzamiento de una excepción explícita:
               class PrinterException extends Exception{}
               class Ejemplo
               {
                           void imprimirClientes( Cliente[] clientes ) throws
         PrinterException
                           {
                                      for( int i=0; i<clientes.length; i++ )
                                      {
                                                 //Imprimir cliente[i]
                                                 if( “error impresión” )
                                                             throw new PrinterException();
                                      }
                           }

                         void informe()
                         {
                                 try{
                                             imprimirClientes(clientes)
                                   }
                                   catch(PrinterExcepcion e){
                                           System.out.println(“Error al imprimir”);
                                   }
                         }
                   }

Programación III                              Tema 4 - Excepciones
Creación de excepciones
                            (3/5)

           – El método imprimirClientes debe declarar que
             puede lanzar la excepción PrinterExceptión
             porque es una excepción explicita.
           – Además, el compilador nos obliga a que el
             código que llame al método imprimirClientes
             debe capturar la posible excepción (o en caso
             contrario relanzarla (throws)).




Programación III               Tema 4 - Excepciones
Creación de excepciones
                            (4/5)
   • Ejemplo de creación y lanzamiento de una excepción implícita:
          class MesInvalidoException extends RuntimeException
          {}
          class Fecha
          {
                   void setMes( int mes )
                   {
                             if( mes < 1 || mes > 12 )
                                    throw new MesInvalidoException();
                   }
          }
          class Ejemplo
          {
                   public static void main( String[] args )
                   {
                             Fecha fecha = new Fecha();
                             fecha.setMes(14);
                   }
          }

Programación III                 Tema 4 - Excepciones
Creación de excepciones
                            (5/5)
           – En este ejemplo no es obligatorio declarar que se lanza
             una excepción porque es de tipo RuntimeException
             (implícita).
           – Además, tampoco es obligatorio capturarla.
   • Java obliga a atrapar las excepciones explícitas,
     ¿Qué pasa si no se atrapa una implícita como en
     este caso?
           – El programa compila correctamente.
           – Al invocar el método setMes( ) con el valor 14, se
             produce la excepción, se propaga al main y como no ha
             sido capturada el main la pasa al proceso principal (la
             JVM). El programa finaliza de una forma anormal pero
             al menos la JVM en su tratamiento por defecto muestra
             un mensaje y el sistema no se “cuelga”.
           – El programador debe darse cuenta de que existe un error
             en el código que llama al método setMes( ).
Programación III                   Tema 4 - Excepciones
Resumen de excepciones
                           explícitas-implícitas
   • Excepciones explícitas:
           –       Derivan de Exception (no de RuntimeException).
           –       Indican un error externo a la aplicación.
           –       Si se lanzan y no se capturan es obligatorio declararlas.
           –       Si se invoca un método que las lanza, es obligatorio o
                   atraparlas o declararlas para ser lanzadas.
   • Excepciones implícitas:
           –       Derivan de RuntimeException.
           –       Indican un error de programación.
           –       No hay por qué declararlas: se deben corregir.
           –       Su captura es opcional.

Programación III                          Tema 4 - Excepciones
Obtención de información de
                           una excepción
   • Una excepción, como cualquier otra clase, puede
     tener operaciones (métodos get/set) que permitan
     obtener más información sobre el error. Toda
     excepción tiene unos métodos útiles.
           – public String getMessage( )
                   • Devuelve el mensaje detallado de error de la excepción.
           – public String toString( )
                   • Devuelve la representación String del error.
           – public void printStackTrace( )
                   • Visualiza en la salida estándar la traza de llamadas causantes el
                     error.




Programación III                             Tema 4 - Excepciones
Ejemplos

   • Ejemplo 1: Lectura de un número por teclado
   • Ejemplo 2: Incorporación de excepciones a
     Fraccion
   • Ejemplo 3: Incorporación de excepciones a
     ListaEnlazada




Programación III       Tema 4 - Excepciones
Ejercicios propuestos (1/2)

   • Ejercicio 1: División por cero
           – Escribe una clase llamada DividePorCero que
             pruebe a dividir un entero entre otro recogiendo
             la excepción de división por cero y mostrando el
             mensaje "Error: división por cero" si se produce.




Programación III                Tema 4 - Excepciones
Ejercicios propuestos (2/2)
   • Ejercicio 2: Clase Fracción
           – Diseña e implementa una clase Fraccion que permite
             crear fracciones (numerador y denominador enteros),
             con métodos para sumar, restar, multiplicar y dividirlas.
           – Crea una excepción FraccionException que se lance
             siempre que en una operación de fracción se produzca
             un error, a saber:
                   • Creación de una fracción con denominador cero.
                   • División de una fracción entre otra con numerador cero.
                   • Cualquier operación que incluya una fracción con denominador
                     cero.
           – Hacer que cada operación crítica lance esta excepción si
             se produce, con un mensaje indicativo del tipo de error
             (mensaje incluido en la excepción, no salida a pantalla!).
             Probar la clase.
Programación III                           Tema 4 - Excepciones

Más contenido relacionado

La actualidad más candente

Modelado basados en escenarios
Modelado basados en escenariosModelado basados en escenarios
Modelado basados en escenariosUCATEBA
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejerciciosWalter Chacon
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EECarlos Gavidia-Calderon
 
Backend middleware frontend (2)
Backend middleware frontend (2)Backend middleware frontend (2)
Backend middleware frontend (2)VirgCSan
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Sistemas de Informacion - Tema 3 diagrama de actividades
Sistemas de Informacion - Tema 3   diagrama de actividadesSistemas de Informacion - Tema 3   diagrama de actividades
Sistemas de Informacion - Tema 3 diagrama de actividadesrulazisc
 
Arquitectura Orientada a Servicios joseadugarte
Arquitectura Orientada a Servicios joseadugarteArquitectura Orientada a Servicios joseadugarte
Arquitectura Orientada a Servicios joseadugartethearcangelboss
 
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLCindy Adriana Bohórquez Santana
 
3.4 RESTRICCIONES.pdf
3.4 RESTRICCIONES.pdf3.4 RESTRICCIONES.pdf
3.4 RESTRICCIONES.pdfAnbuHaki
 
Diagrama de casos de uso del negocio y del sistema
Diagrama de casos de uso del negocio y del sistemaDiagrama de casos de uso del negocio y del sistema
Diagrama de casos de uso del negocio y del sistemaJohannNz
 

La actualidad más candente (20)

Transacciones en SQL SERVER
Transacciones en SQL SERVERTransacciones en SQL SERVER
Transacciones en SQL SERVER
 
05 java excepciones
05 java excepciones05 java excepciones
05 java excepciones
 
Modelado basados en escenarios
Modelado basados en escenariosModelado basados en escenarios
Modelado basados en escenarios
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Diagramas de actividades
Diagramas de actividadesDiagramas de actividades
Diagramas de actividades
 
Diagrama UML Casos de Uso
Diagrama UML Casos de UsoDiagrama UML Casos de Uso
Diagrama UML Casos de Uso
 
Diagrama de dominio armando
Diagrama de dominio armandoDiagrama de dominio armando
Diagrama de dominio armando
 
colecciones en java
colecciones en javacolecciones en java
colecciones en java
 
Backend middleware frontend (2)
Backend middleware frontend (2)Backend middleware frontend (2)
Backend middleware frontend (2)
 
Control de versiones (CVS)
Control de versiones (CVS)Control de versiones (CVS)
Control de versiones (CVS)
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Sistemas de Informacion - Tema 3 diagrama de actividades
Sistemas de Informacion - Tema 3   diagrama de actividadesSistemas de Informacion - Tema 3   diagrama de actividades
Sistemas de Informacion - Tema 3 diagrama de actividades
 
Arquitectura Orientada a Servicios joseadugarte
Arquitectura Orientada a Servicios joseadugarteArquitectura Orientada a Servicios joseadugarte
Arquitectura Orientada a Servicios joseadugarte
 
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
 
Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
 
3.4 RESTRICCIONES.pdf
3.4 RESTRICCIONES.pdf3.4 RESTRICCIONES.pdf
3.4 RESTRICCIONES.pdf
 
Diagrama de casos de uso del negocio y del sistema
Diagrama de casos de uso del negocio y del sistemaDiagrama de casos de uso del negocio y del sistema
Diagrama de casos de uso del negocio y del sistema
 
ejercicios php rfo
ejercicios php rfoejercicios php rfo
ejercicios php rfo
 

Destacado

Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en javajent46
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en JavaJohn Ortiz
 
Java excepciones
Java excepcionesJava excepciones
Java excepcionesricardo_79
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gioRobert Wolf
 
Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin
Cómo ser más feliz, ligar más y tener más pelo programando en KotlinCómo ser más feliz, ligar más y tener más pelo programando en Kotlin
Cómo ser más feliz, ligar más y tener más pelo programando en KotlinJesús L. Domínguez Muriel
 
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
Cu00927 c gestion excepciones java try catch finally ejemplos ejerciciosCu00927 c gestion excepciones java try catch finally ejemplos ejercicios
Cu00927 c gestion excepciones java try catch finally ejemplos ejerciciosUniminuto - San Francisco
 
Estandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al SoftwareEstandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al Softwareyolanda
 
excepciones_java en www.fiec.espol.edu.ec
excepciones_java  en www.fiec.espol.edu.ecexcepciones_java  en www.fiec.espol.edu.ec
excepciones_java en www.fiec.espol.edu.ecSilvana Vargas
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVAinnovalabcun
 
Juicio ejecutivo mercantil
Juicio ejecutivo mercantilJuicio ejecutivo mercantil
Juicio ejecutivo mercantilAstrid Soto
 
Course 10-Unit 7: Gerunds as objects of prepositions.pending for review
Course 10-Unit 7: Gerunds as objects of prepositions.pending for reviewCourse 10-Unit 7: Gerunds as objects of prepositions.pending for review
Course 10-Unit 7: Gerunds as objects of prepositions.pending for reviewMartin Caicedo
 
Asignación de roles en los grupos de trabajo colaborativo
Asignación de roles en los grupos de trabajo colaborativoAsignación de roles en los grupos de trabajo colaborativo
Asignación de roles en los grupos de trabajo colaborativolidiapilar14
 
Tipos de roles
Tipos de rolesTipos de roles
Tipos de rolesMagditita
 

Destacado (20)

Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en Java
 
Java excepciones
Java excepcionesJava excepciones
Java excepciones
 
Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3
 
excepciones en java
excepciones en javaexcepciones en java
excepciones en java
 
5.manejo de excepciones
5.manejo de excepciones5.manejo de excepciones
5.manejo de excepciones
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
 
Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin
Cómo ser más feliz, ligar más y tener más pelo programando en KotlinCómo ser más feliz, ligar más y tener más pelo programando en Kotlin
Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin
 
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
Cu00927 c gestion excepciones java try catch finally ejemplos ejerciciosCu00927 c gestion excepciones java try catch finally ejemplos ejercicios
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
 
Estandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al SoftwareEstandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al Software
 
excepciones_java en www.fiec.espol.edu.ec
excepciones_java  en www.fiec.espol.edu.ecexcepciones_java  en www.fiec.espol.edu.ec
excepciones_java en www.fiec.espol.edu.ec
 
Java oo tema09_excepciones
Java oo tema09_excepcionesJava oo tema09_excepciones
Java oo tema09_excepciones
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Lista simple
Lista simpleLista simple
Lista simple
 
Programación 1: estructuras de datos
Programación 1: estructuras de datosProgramación 1: estructuras de datos
Programación 1: estructuras de datos
 
Juicio ejecutivo mercantil
Juicio ejecutivo mercantilJuicio ejecutivo mercantil
Juicio ejecutivo mercantil
 
Course 10-Unit 7: Gerunds as objects of prepositions.pending for review
Course 10-Unit 7: Gerunds as objects of prepositions.pending for reviewCourse 10-Unit 7: Gerunds as objects of prepositions.pending for review
Course 10-Unit 7: Gerunds as objects of prepositions.pending for review
 
Roles y funciones y organizacion
Roles y funciones y organizacionRoles y funciones y organizacion
Roles y funciones y organizacion
 
Asignación de roles en los grupos de trabajo colaborativo
Asignación de roles en los grupos de trabajo colaborativoAsignación de roles en los grupos de trabajo colaborativo
Asignación de roles en los grupos de trabajo colaborativo
 
Tipos de roles
Tipos de rolesTipos de roles
Tipos de roles
 

Similar a Programación III (Java) - 04 Excepciones

Similar a Programación III (Java) - 04 Excepciones (20)

Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)
 
Java exceptions
Java exceptionsJava exceptions
Java exceptions
 
excepciones en java
excepciones en javaexcepciones en java
excepciones en java
 
Java exceptions
Java exceptionsJava exceptions
Java exceptions
 
EXCEPCIONES JAVA
EXCEPCIONES JAVAEXCEPCIONES JAVA
EXCEPCIONES JAVA
 
Java5
Java5Java5
Java5
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
 
Capitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaCapitulo 16- Excepciones en Java
Capitulo 16- Excepciones en Java
 
Taller 1 4
Taller 1 4Taller 1 4
Taller 1 4
 
Tema 10 excepciones
Tema 10 excepcionesTema 10 excepciones
Tema 10 excepciones
 
11-Unidad 3: Encapsulamiento y modularidad
11-Unidad 3: Encapsulamiento y modularidad11-Unidad 3: Encapsulamiento y modularidad
11-Unidad 3: Encapsulamiento y modularidad
 
11 Excepciones
11   Excepciones11   Excepciones
11 Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Manejo de Excepciones
Manejo de ExcepcionesManejo de Excepciones
Manejo de Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Jyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc java-cap12 excepciones
Jyoc java-cap12 excepciones
 
Gestión de Excepciones
Gestión de ExcepcionesGestión de Excepciones
Gestión de Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 

Más de Andoni Eguíluz Morán

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611Andoni Eguíluz Morán
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Andoni Eguíluz Morán
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...Andoni Eguíluz Morán
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosAndoni Eguíluz Morán
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512Andoni Eguíluz Morán
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Andoni Eguíluz Morán
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoAndoni Eguíluz Morán
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesAndoni Eguíluz Morán
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Andoni Eguíluz Morán
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesAndoni Eguíluz Morán
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaAndoni Eguíluz Morán
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Andoni Eguíluz Morán
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasAndoni Eguíluz Morán
 

Más de Andoni Eguíluz Morán (20)

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamos
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativo
 
Uso ético y seguro de las TIC
Uso ético y seguro de las TICUso ético y seguro de las TIC
Uso ético y seguro de las TIC
 
Redes Sociales Educativas
Redes Sociales EducativasRedes Sociales Educativas
Redes Sociales Educativas
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitales
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos Digitales
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativa
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)
 
SGGN 20140605
SGGN 20140605SGGN 20140605
SGGN 20140605
 
Programación III (Java) - 09 Cierre
Programación III (Java) - 09 CierreProgramación III (Java) - 09 Cierre
Programación III (Java) - 09 Cierre
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Programación III (Java) - 07b Swing
Programación III (Java) - 07b SwingProgramación III (Java) - 07b Swing
Programación III (Java) - 07b Swing
 
Programación III (Java) - 07 Eventos
Programación III (Java) - 07 EventosProgramación III (Java) - 07 Eventos
Programación III (Java) - 07 Eventos
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 

Último

Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicaGianninaValeskaContr
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 

Último (20)

Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básica
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 

Programación III (Java) - 04 Excepciones

  • 1. 4. Excepciones ¿Qué son las excepciones? Detección de errores Manejo de excepciones en Java Finally y relanzamiento de excepciones Jerarquía de excepciones Excepciones implícitas y explícitas Obtención de información de una excepción Ejemplos y ejercicios propuestos Programación III Tema 4 - Excepciones
  • 2. ¿Qué son las excepciones? (1/2) • Si una operación no puede completarse debido a un error, el programa deberá: – Volver a un estado estable y permitir otras operaciones. – Intentar guardar el trabajo y finalizar. • Esto es difícil debido a que generalmente, el código que detecta el error no es el que puede realizar dichas tareas. • Entonces, el que detecta el error debe informar al que pueda manejarlo. Programación III Tema 4 - Excepciones
  • 3. ¿Qué son las excepciones? • (2) La solución más habitual a esto son los retornos de códigos de error. Esto presenta una serie de inconvenientes: – No siempre queda sitio para códigos de error (p. ej.: getchar). – No se garantiza que se vayan a consultar. No es obligatorio recoger un valor de retorno. – Si se contemplan todos los errores, el código crece demasiado. – La lógica del programa queda oscurecida. – No sirven en los constructores donde no se devuelve nada. • En definitiva, hacen que el tratamiento de errores sea complejo y que a menudo no se traten todos los errores. • Java ofrece una solución, otra forma de tratar con los errores: las excepciones . • Definición: – Una excepción es un evento excepcional que ocurre durante la ejecución del programa y que interrumpe el flujo normal de las sentencias. – Es un mecanismo de control de flujo generalmente usado para tratamiento de situaciones EXCEPCIONALES (como errores por ejemplo). Programación III Tema 4 - Excepciones
  • 4. Detección de errores (1/2) • Una condición excepcional es aquella que impide la continuación de una operación. • En Java, cuando ocurre algo así, se lanza una excepción (throw) para que alguien que sepa manejarla la trate en un contexto superior. – Por ejemplo: if ( “error de CRC” ) throw new IOException(); – Con la palabra THROW se lanza una excepción. • Cuando ocurre esto, se interrumpe la ejecución habitual del método y se lanza un objeto que facilite información sobre el error ocurrido. • Normalmente se utilizará una clase diferente para cada tipo de error. Dicha clase deberá contener toda la información necesaria para tratar de forma correcta dicho error y conocer lo ocurrido. Programación III Tema 4 - Excepciones
  • 5. Detección de errores (2/2) • Java obliga a que un método informe de las excepciones (explícitas) que puede lanzar. – Un método no sólo tiene que decir qué devuelve si todo va bien, también debe indicar qué puede fallar. – Un método especifica las excepciones que se pueden producir en él mediante la palabra THROWS en la declaración del método. – Por ejemplo: void f() throws EOFException, FileNotFoundException { if( ... ) throw new EOFException(); if( ... ) throw new FileNotFoundException(); } Programación III Tema 4 - Excepciones
  • 6. Manejo de excepciones (1/6) • Una vez que se detecta un error hace falta indicar quién se encarga de tratarlo. – Para manejar excepciones hay que utilizar las palabras clave TRY y CATCH. • El TRY delimita el grupo de sentencias que pueden producir excepciones. • El bloque CATCH es el lugar al que se transfiere el control si alguna de las operaciones produce una excepción. try{ // Operaciones que pueden “fallar”: que // pueden producir alguna excepción. } catch( <tipoDeExcepción> ref ){ // Tratamiento de esa excepción } Programación III Tema 4 - Excepciones
  • 7. Manejo de excepciones (2/6) • Por ejemplo: try{ a.abreFichero(); a.leeCabecera(); a.actualizaDatos(); } catch( IOException ref ){ System.out.println( “Error de E/S” ); } – Si alguna de las operaciones del bloque produce una excepción, se interrumpe el bloque try y se ejecuta el catch. Al finalizar éste, se continúa normalmente. – Si no se produce ninguna excepción el bloque catch se ignora. Programación III Tema 4 - Excepciones
  • 8. Manejo de excepciones (3/6) • Un bloque try puede tener varios catch asociados, uno para cada tipo de excepción que se pueda producir. – Por ejemplo: try{ a.abreFichero(); a.leeCabecera(); a.actualizaDatos(); } catch( FileNotFoundException ref ){ System.out.println( “Error de apertura” ); } catch( IOException ref ){ System.out.println( “Error de E/S” ); } Programación III Tema 4 - Excepciones
  • 9. Manejo de excepciones (4/6) • Si se produce una excepción que no se corresponde con ningún catch indicado, la excepción se propaga hacia atrás en la secuencia de invocaciones hasta encontrar un catch adecuado. • Por ejemplo: void f1( int accion ) throws EOFException { try{ if( accion == 1 ) throw new FileNotFoundException(); else if( accion == 2 ) throw new EOFException(); } catch( FileNotFoundException e ){ System.out.println( “Error corregido” ); } System.out.println(“Finalización normal de f1”); } void f2( int accion ) { try{ f1( accion ): } catch( EOFException e ){ System.out.println( “Error corregido” ); } System.out.println(“Finalización normal de f2”); } Programación III Tema 4 - Excepciones
  • 10. Manejo de excepciones (5/6) – ¿ Qué pasa si se llama a f2 pasándole los valores 1 ó 2 para el parámetro acción? ¿En qué método se producen las excepciones y en cuál se tratan? • Cuando se invoca a un método que lanza excepciones, es obligatorio: – Que se maneje el error (en un catch). – O que se indique mediante throws su propagación. Programación III Tema 4 - Excepciones
  • 11. Manejo de excepciones (6/6) • Por ejemplo: void f1() throws IOException { ... } //ALTERNATIVA 1: TRATAR EL ERROR EN CUANTO SE PRODUCE void f2() { try{ f1() } catch( IOException e ){ // Tratamiento del error } } //ALTERNATIVA 2: SE CONTINUA PROPAGANDO EL ERROR //PARA QUE LO GESTIONE OTRO METODO void f2() throws IOException { f1(); } Programación III Tema 4 - Excepciones
  • 12. Finally (1/3) • Puede haber ocasiones en que se desea realizar alguna operación tanto si se producen excepciones como si no. • Dichas operaciones se pueden situar dentro de un bloque FINALLY. try{ // Operaciones con posibles excepciones } catch( <tipoDeExcepcion> ref ){ // Tratamiento de la excepción } finally{ // Operaciones comunes } Programación III Tema 4 - Excepciones
  • 13. Finally (2/3) • Ejemplo: class Recurso { void reserva() throws ExceptionA, ExceptionB, ExceptionC { ... } void libera() { ... } } class Ejemplo { void prueba() { Recurso recurso = new Recurso(); try{ recurso.reserva(); // Operaciones con posibles excepciones } catch( ExceptionA a ){// Tratamiento del error} catch( ExceptionB b ){// Tratamiento del error} catch( ExceptionC c ){// Tratamiento del error} finally{ recurso.libera(); } } } Programación III Tema 4 - Excepciones
  • 14. Finally (3/3) • Si no se produce ninguna excepción, se ejecutarán el bloque try y el finally. • En cambio, si se produce alguna excepción: – Si es atrapada por un catch del mismo try, se ejecuta éste y luego el finally. La ejecución continúa después del finally con normalidad. – Si no es atrapada, se ejecuta el finally y la excepción se propaga al contexto anterior. Programación III Tema 4 - Excepciones
  • 15. Relanzamiento de excepciones • Hay situaciones en las que interesa relanzar una excepción ya atrapada. • Interesa dar un tratamiento determinado a una excepción pero también interesa seguir propagándola hacia arriba para que en un contexto superior se siga teniendo constancia de ella. catch( Exception e ){ // Tratar excepción y propagar throw e; } Programación III Tema 4 - Excepciones
  • 16. Jerarquía de excepciones (1/4) • Toda excepción debe ser una instancia de una clase derivada de la clase Throwable. • De ella hereda una serie de métodos que dan información sobre cada excepción. – getMessage – toString – printStackTrace (imprime en la salida estándar un volcado de la pila de llamadas). Programación III Tema 4 - Excepciones
  • 17. Jerarquía de excepciones (2/4) • La jerarquía de excepciones en Java es la siguiente: Programación III Tema 4 - Excepciones
  • 18. Jerarquía de excepciones (3/4) – Las clases derivadas de Error describen errores internos de la JVM (errores serios) que la aplicación no debería intentar gestionar. • Ejemplos: OutOfMemoryError, StackOverflowError, etc. – Los programas en Java trabajarán con las excepciones de la rama Exception. Estas excepciones se clasifican en: – Explícitas: las que derivan directamente de Exception. – Implícitas: las que derivan de RunTimeException. Programación III Tema 4 - Excepciones
  • 19. Jerarquía de excepciones (4/4) – Se utilizan las RunTimeException (implícitas) para indicar un error de programación = interno. Si se produce una excepción de este tipo hay que arreglar el código. • Por ejemplo: un cast incorrecto, acceso a un array fuera de rango, uso de un puntero null, etc. – El resto de las Exception (explícitas) indican que ha ocurrido algún error ajeno al programa. • Por ejemplo: un error de E/S, error de conexión, etc. • Los métodos deben declarar (throws) sólo las excepciones explícitas. • Las implícitas no hay que declararlas (throws). El error suele ser del programador por lo que no se recomienda su tratamiento, sino corregir el código para que no se produzcan. Programación III Tema 4 - Excepciones
  • 20. Creación de excepciones (1/5) • En Java se pueden crear nuevas clases de Excepciones. – La única condición es que la clase derive de la clase Throwable o de alguna derivada. • En la práctica, normalmente derivará: – de RuntimeException si se desea notificar un error de programación. – de Exception en cualquier otro caso. • Cuestiones – En un método que tiene como parámetro un entero entre 1 y 12 se recibe un 14 ¿Qué tipo de excepción se crearía para notificarlo? – Si un método para listar Clientes por impresora se encuentra con que deja de responder, ¿qué tipo de excepción debería crear? Programación III Tema 4 - Excepciones
  • 21. Creación de excepciones (2/5) • Ejemplo de creación y lanzamiento de una excepción explícita: class PrinterException extends Exception{} class Ejemplo { void imprimirClientes( Cliente[] clientes ) throws PrinterException { for( int i=0; i<clientes.length; i++ ) { //Imprimir cliente[i] if( “error impresión” ) throw new PrinterException(); } } void informe() { try{ imprimirClientes(clientes) } catch(PrinterExcepcion e){ System.out.println(“Error al imprimir”); } } } Programación III Tema 4 - Excepciones
  • 22. Creación de excepciones (3/5) – El método imprimirClientes debe declarar que puede lanzar la excepción PrinterExceptión porque es una excepción explicita. – Además, el compilador nos obliga a que el código que llame al método imprimirClientes debe capturar la posible excepción (o en caso contrario relanzarla (throws)). Programación III Tema 4 - Excepciones
  • 23. Creación de excepciones (4/5) • Ejemplo de creación y lanzamiento de una excepción implícita: class MesInvalidoException extends RuntimeException {} class Fecha { void setMes( int mes ) { if( mes < 1 || mes > 12 ) throw new MesInvalidoException(); } } class Ejemplo { public static void main( String[] args ) { Fecha fecha = new Fecha(); fecha.setMes(14); } } Programación III Tema 4 - Excepciones
  • 24. Creación de excepciones (5/5) – En este ejemplo no es obligatorio declarar que se lanza una excepción porque es de tipo RuntimeException (implícita). – Además, tampoco es obligatorio capturarla. • Java obliga a atrapar las excepciones explícitas, ¿Qué pasa si no se atrapa una implícita como en este caso? – El programa compila correctamente. – Al invocar el método setMes( ) con el valor 14, se produce la excepción, se propaga al main y como no ha sido capturada el main la pasa al proceso principal (la JVM). El programa finaliza de una forma anormal pero al menos la JVM en su tratamiento por defecto muestra un mensaje y el sistema no se “cuelga”. – El programador debe darse cuenta de que existe un error en el código que llama al método setMes( ). Programación III Tema 4 - Excepciones
  • 25. Resumen de excepciones explícitas-implícitas • Excepciones explícitas: – Derivan de Exception (no de RuntimeException). – Indican un error externo a la aplicación. – Si se lanzan y no se capturan es obligatorio declararlas. – Si se invoca un método que las lanza, es obligatorio o atraparlas o declararlas para ser lanzadas. • Excepciones implícitas: – Derivan de RuntimeException. – Indican un error de programación. – No hay por qué declararlas: se deben corregir. – Su captura es opcional. Programación III Tema 4 - Excepciones
  • 26. Obtención de información de una excepción • Una excepción, como cualquier otra clase, puede tener operaciones (métodos get/set) que permitan obtener más información sobre el error. Toda excepción tiene unos métodos útiles. – public String getMessage( ) • Devuelve el mensaje detallado de error de la excepción. – public String toString( ) • Devuelve la representación String del error. – public void printStackTrace( ) • Visualiza en la salida estándar la traza de llamadas causantes el error. Programación III Tema 4 - Excepciones
  • 27. Ejemplos • Ejemplo 1: Lectura de un número por teclado • Ejemplo 2: Incorporación de excepciones a Fraccion • Ejemplo 3: Incorporación de excepciones a ListaEnlazada Programación III Tema 4 - Excepciones
  • 28. Ejercicios propuestos (1/2) • Ejercicio 1: División por cero – Escribe una clase llamada DividePorCero que pruebe a dividir un entero entre otro recogiendo la excepción de división por cero y mostrando el mensaje "Error: división por cero" si se produce. Programación III Tema 4 - Excepciones
  • 29. Ejercicios propuestos (2/2) • Ejercicio 2: Clase Fracción – Diseña e implementa una clase Fraccion que permite crear fracciones (numerador y denominador enteros), con métodos para sumar, restar, multiplicar y dividirlas. – Crea una excepción FraccionException que se lance siempre que en una operación de fracción se produzca un error, a saber: • Creación de una fracción con denominador cero. • División de una fracción entre otra con numerador cero. • Cualquier operación que incluya una fracción con denominador cero. – Hacer que cada operación crítica lance esta excepción si se produce, con un mensaje indicativo del tipo de error (mensaje incluido en la excepción, no salida a pantalla!). Probar la clase. Programación III Tema 4 - Excepciones