SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
1   5   /   0   8   /   2   0   1   0




ISC. Maribel bueno quiñones
ISC/MC. María Elena montes Almanza
ISC/ME. Pedro celestino Ramírez

JAVA / EXCEPCIONES




EXCEPCIONES

  Una excepción es una situación anómala que
  puede producirse durante la ejecución de un
  programa, como pude ser un intento de
  división entera entre 0, un acceso a posición
  de un array fuera de los limites del mismo o un
  fallo durante la lectura de datos de la entrada /
  salida.




                                                                                          1
1   5   /   0   8   /   2   0   1   0




EXCEPCIONES

 Mediante la captura de excepciones, java
 proporciona un mecanismo que permite al
 programa sobreponerse a estas situaciones,
 pudiendo el programador decidir las acciones a
 realizar para cada tipo de excepción que pueda
 ocurrir.




EXCEPCIONES

 Además de excepciones, en un programa java
 pueden producirse errores. Un error representa
 una situación anormal irreversible, como por
 ejemplo un fallo de la maquina virtual. Por
 regla general, un programa no deberá intentar
 recuperarse de un error, dado que son
 situaciones que se escapan al control del
 programador




                                                                                      2
1   5   /   0   8   /   2   0   1   0




EXCEPCIONES




EXCEPCIONES
 Cada tipo de excepción esta representada por
 una subclase de Exception mientras que los
 errores son subclases de Error Ambas clases,
                          Error.
 Exception y Error son subclases de Trhowable
             Error,                 Trhowable.
                          object



                         Throwable



            Exception                 Error


           Excepciones               Errores




                                                                                     3
1   5   /   0   8   /   2   0   1       0




CLASES DE EXCEPCIÓN

 Al producirse una excepción en un programa,
 se crea un objeto de la subclase de la
 Exception a la que pertenece la excepción.
 Como veremos mas adelante, este objeto
 puede ser utilizado por el programa durante el
 tratamiento de la excepción para obtener
 información de la mismo.




JERARQUIA DE CLASES / EXCEPCIONES
HABITUALES
                              Exception



    RuntimeException
                             IOException
                                           SQLException   ..
               ArithmeticException

               NullPointerException

               IndexOutOfBoundException


               ClassCastException


                              :


                                                                                                   4
1   5   /   0   8   /   2   0   1   0




TIPOS DE EXCEPCIONES

 Desde el punto de vista del tratamiento de una
 excepción dentro de un programa, hay que
 tener en cuenta que todas estas clases de
 excepción se dividen en dos grandes grupo.
             marcadas.
 Excepciones marcadas.
 Excepciones no marcadas.
                 marcadas.




EXCEPCIONES MARCADAS.
 Captura obligatoria.
 Se producen al invocar ciertos métodos de
 determinadas clases y son generadas (lanzadas).
 Todas as clases de excepciones, salvo
 RuntimeException y sus subclases, pertenecen a
 este tipo.
 Un ejemplo de excepción marcada es IOException
                                       IOException.
 Esta excepción es lanzada por el método
 readLine()
 readLine() de la clase BufferedReader cuando se
 produce un error durante la operación de lectura.




                                                                                          5
1   5   /   0   8   /   2   0   1   0




EXCEPCIONES MARCADAS.

 Si en un bloque de código se invoca a algún
 método que puede provocar una excepción
 marcada y esta no se captura, el programa no
 se compilara.




DECLARACIÓN DE UNA EXCEPCIÓN
 Los métodos que pueden provocar excepciones
 marcadas, deben declarar estas en la definición del
 método.
 Para declarar una excepción se utiliza la palabra throws
                                                   throws,
 seguida de la lista de excepciones que el método puede
 provocar:
 public String readLine() throws IOException
 Public void service(…) throws ServletException, IOException
 Así siempre que vayamos a utilizar algún método que
 tenga declaradas excepciones, hemos de tener presente
 que estamos obligados a capturar dichas excepciones.




                                                                                                   6
1   5   /   0   8   /   2   0   1   0




EXCEPCIONES NO MARCADAS

 Pertenecen a este grupo todas las excepciones
 de    tiempo   de    ejecución,    es   decir,
 RuntimeException y todas sus subclases.




EXCEPCIONES NO MARCADAS
 No es obligatorio capturar dentro de un programa
 java una excepción no marcada, el motivo es que
 gran parte de ellas (NullPointerException,
                              NullPointerException,
                              NullPointerException
 ClassCastException, etc.
 ClassCastException, etc.,) se producen como
 consecuencia de una mala programación, por lo
 que la solución no debe pasar por prepara al
 programa para que sea capaz de recuperarse ante
 una situación como ésta, sino por evitar que se
 produzca. Tan sólo las excepciones de tipo
 ArithmeticException es recomendable capturarlas.




                                                                                          7
1   5   /   0   8   /   2   0   1   0




EXCEPCIONES NO MARCADAS

 Si durante la ejecución de un programa java se
 produce una excepción y ésta no capturada, la
 maquina virtual provoca la finalización
 inmediata del mismo, enviando a la consola el
 volcado de pila con los datos de la excepción a
 la consola, estos volcados de pila permiten al
 programador detectar fallos de programación
 durante la depuración del mismo.




EJEMPLO EXCEPCIONES NO MARCADAS
                                             Ocurre
                                           excepción
public class Division                         por
{                                           división
 public static void main (String[] args)    por cero
  {
   int k=4/0;
  }
}                                           Volcado
                                            de la pila




                                                                                             8
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES
try
{
 // instrucciones donde se pueden producir excepciones
}
catch
{

}
finally
{

}
Proporcionan una forma elegante y estructurada de capturar
  excepciones dentro de un programa java,




CAPTURA DE EXCEPCIONES

try : elimina aquella o aquellas
  instrucciones donde se puede producir
  una excepción. Cuando esto sucede, el
  control del programa se transfiere al
  bloque catch definido para el tipo de
  excepción que se ha producido,
  pasándole     como    parámetro     la
  excepción lanzada.




                                                                                                 9
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES

catch : define las instrucciones
 que deberán ejecutarse en caso
 en caso de que produzca un
 determinado tipo de excepción.




CAPTURA DE EXCEPCIONES

catch : debe considerar lo siguiente:
 Puede haber tantos bloques catch
 como considere necesario.
 Cada catch servirá para tratar un
 determinado tipo de excepción.
 No pudiendo haber dos o mas catch
 que tengan declarada la misma clase
    excepción.
 de excepción




                                                                        1   0
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES
Un bloque catch sirve para capturar cualquier
  excepción que se corresponde con el tipo
  declarado o cualquiera de sus subclases.
Catch (RuntimeException e)
{
:
}
Produciría    cualquiera     (NullPointerException,
  ArithmeticException, etc.)




CAPTURA DE EXCEPCIONES

Aunque haya varios posibles catch
 que puedan capturar una
 excepción, solo uno de ellos será
 ejecutado cuando ésta se
 produzca.
 produzca El primer catch que
 coincidente será el que se
 ejecutará.



                                                                                      1   1
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES

        finally.
        finally. Una vez terminada la ejecución, el
        control del programa se transferirá al bloque
        finally o si no existe a la instrucción siguiente al
        ultimo bloque catch.




CAPTURA DE EXCEPCIONES
public class PruebaExcepcion
{
  public static void main (String[] args)
  {
   try
    {
     int s=4/0;
     System.out.println("el programa sigue");
    }
   catch (ArithmeticException e)
    {
     System.out.println("division por cero");
    }
   catch (Exception e)
    {
     System.out.println("excepcion general");
    }
   System.out.println("fin de main");

    }
}




                                                                                               1   2
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES
 El control del programa nunca se devuelve al
 lugar donde se producido la excepción.
 En el caso de que existan varios catch cuyas
 excepciones están relacionadas por la
 herencia, los catch mas específicos deben de
 estar situados por delante de los mas
 genéricos. De no ser así, se producirá un error
 de compilación puesto que los bloques catch
 mas específicos nunca se ejecutaran.




CAPTURA DE EXCEPCIONES
 public class PruebaExcepcion
 {
   public static void main (String[] args)
   {
    try
     {
      int s=4/0;
      System.out.println("el programa sigue");
     }
    catch (Exception e)
     {
      System.out.println("excepcion general");
     }
    catch (ArithmeticException e)
     {
      System.out.println("division por cero");
     }

     System.out.println("fin de main");

     }
 }




                                                                                   1   3
1   5   /   0   8   /   2   0   1       0




 CAPTURA DE EXCEPCIONES

     Si se produce una excepción no marcada para
     la que no se ha definido bloque catch, ésta
     será propagada por la pila de llamadas hasta
     encontrar un punto en el que se trate la
     excepción. De no existir un tratamiento para la
     misma, la maquina virtual abortara la
     ejecución del programa y enviará un volcado de
     pila a la consola.




 CAPTURA DE EXCEPCIONES


        Método 1
                              Llamadas a método




                          Método 2
                                          ..Llamadas a método
Propagación de la excepción
                                                    Método n
                                                  Excepción no
                                                    tratada X

                                       Propagación de la excepción

    Propagación de una excepción en la pila de llamadas




                                                                                                     1   4
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES

  Los bloques catch son opcionales. Siempre que
                   finally,
  existe un bloque finally la creación de bloques
  catch después de un try es opcional. Si no se
  cuenta con un bloque finally entonces es
                             finally,
  obligatorio disponer de al menos un bloque
  catch.
  catch




CAPTURA DE EXCEPCIONES
finally:
   Se ejecuta tanto si se produces una excepción o
   no.
   Si se produce una excepción este se ejecuta
   después del bloque catch.
   El bloque finally se ejecutará antes de propagar la
   excepción.
   Si no se produce excepción alguna en el interior
   de try, el bloque finally se ejecutará tras la ultima
   instrucción del try.




                                                                                           1   5
1   5   /   0   8   /   2   0   1   0




CAPTURA DE EXCEPCIONES
public class Excepcion
{
  public static void main (String[] args)
  {
   try
     {
      int s=4/0;
      System.out.println("el programa sigue");
     }
   catch (ArithmeticException e)
     {
      System.out.println("division por cero");
     }
   catch (Exception e)
     {
      System.out.println("excepcion general");
     }

    finally
      {
       System.out.println("ejecucion de finally");   Aun existiendo una instrucción para
      }
    System.out.println("fin de main");
                                                     la salida del método (return), el
    }
                                                     bloque finally se ejecutará antes de
}                                                    que esto suceda




PROPAGACIÓN DE UNA EXCEPCIÓN
        En el caso de las excepciones marcadas,
        hemos visto cómo éstas deben ser capturadas
        obligatoriamente en un programa. Sin
        embargo, en el caso de que no se tenga
        previsto ninguna acción particular para el
        tratamiento de una determinada excepción de
        este tipo, es posible propagar la excepción sin
        necesidad de capturarla, dejando que sean
        otras partes del programa las encargadas de
        definir las acciones para su tratamiento.




                                                                                                                            1   6
1   5   /   0   8   /   2   0   1   0




PROPAGACIÓN DE UNA EXCEPCIÓN
import java.io.*;
public class ExcepcionIO
{
  public static void main (String[] args)
  {
   BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
   try
     {
      imprime(b);
     }
   catch (IOException e)
     {
      System.out.println("error en la lectura");
     }

    finally
      {
       System.out.println("ejecucion de finally");
      }
    System.out.println("fin de main");

    }
    static void imprime(BufferedReader bf) throws IOException
    {
      String n=bf.readLine(); //puede provocar una excepcion
      System.out.println(n);
    }
}




LANZAMIENTO DE UNA EXCEPCIÓN
  En determinados casos puede resultar útil generar y
  lanzar un excepción desde el interior de un determinado
  método. Esto puede utilizarse como un medio para
  enviar un aviso a otra parte del programa, indicándole
  que algo está sucediendo y no es posible continuar con
  la ejecución del normal del método.
  Para lanzar una excepción desde el código utilizamos la
  expresión:
         objeto_excepcion;
 Throw objeto_excepcion;
Objeto_excepcion es un objeto de alguna subclase de
  Exception




                                                                                                            1
                                                                                                                7
1   5   /   0   8   /   2   0   1   0




EJEMPLO CAJERO
public class Cajero
{
  public static void main (String[] args)
  {
   Cuenta c=new Cuenta();
   try
   {
     c.ingresar(100);
     c.extraer(200);
   }
   catch (Exception e)
   {
     System.out.println("la cuenta no puede "+
                " quedar en numeros rojos");
   //lo ideal es manejar este objeto
     System.out.println(e.getMessage());
   }
  }
}




EJEMPLO CUENTA
class Cuenta
{
 double saldo;
 public Cuenta()
 {
  saldo=0;
 }
 public void ingresar(double c)
 {
   saldo+=c;
 }
 // el metodo declara la excepcion que puede
                                                             Cuando     se    lanza   una
 // caudar una excepcion.
 public void extraer(double c) throws Exception
                                                             excepción marcada desde el
 {
   if (saldo<c)
                                                             método (todas lo son salvo
   {
       // creacion y lanzamiento de la excepcion
                                                             RumtimeException     y   sus
   }
       throw new Exception("el saldo es menor al retiro");
                                                             subclases) esta debe ser
   else
   {
                                                             declarada en la cabecera del
   }
       saldo-=c;
                                                             método para que se pueda
 }
 public double getSaldo()
                                                             propagar al punto de llamada
 {
   return saldo;
                                                             al mismo.
 }
}




                                                                                                                            1   8
1   5   /   0   8   /   2   0   1   0




MÉTODOS PARA EL CONTROL DE UNA
EXCEPCIÓN
 getMessage() mensaje osociado a la excepción.
 printStackTrace() envía a consola el volcado de
 pila, para ver errores de varias excepciones.
 printStackTrace(PrintStream s) permite enviar
 el volcado de pila a un objeto como un archivo.




CLASES DE EXCEPCIONES PERSONALIZADAS
 Cuando un método necesita lanzar una
 excepción como forma de notificar una
 situación anómala, puede suceder que las
 clases de excepciones existentes no se
 adecuen a las características de las situación
 que quiere notificar.
 Por ejemplo en el caso anterior seria mas
 eficiente un excepción de saldoInsuficiente.
 Siendo mas eficiente una excepción
 personalizada




                                                                                   1   9
1   5   /   0   8   /   2   0   1   0




CAJERO EXCEPCIÓN PERSONALIZADA
public class CajeroExc
{
  public static void main (String[] args)
  {
   Cuenta c=new Cuenta();
   try
   {
     c.ingresar(100);
     c.extraer(20);
   }
   catch (SaldoInsuficienteException e)
   {
     System.out.println("la cuenta no puede "+
                " quedar en numeros rojos");
   //lo ideal es manejar este objeto
     System.out.println(e.getMessage());
   }
  }
}




CAJERO EXCEPCIÓN PERSONALIZADA
class Cuenta
{
 double saldo;
 public Cuenta()
 {
  saldo=0;
 }
 public void ingresar(double c)
 {
   saldo+=c;
 }
 // el metodo declara la excepcion que puede
 // causar una excepcion.
 public void extraer(double c) throws SaldoInsuficienteException
 {
   if (saldo<c)
   {
       // creacion y lanzamiento de la excepcion
       throw new SaldoInsuficienteException("el saldo es menor al retiro");
   }
   else
   {
       saldo-=c;
   }
 }
 public double getSaldo()
 {
   return saldo;
 }
}




                                                                                                              2   0
1   5   /   0   8   /   2   0   1   0




CAJERO EXCEPCIÓN PERSONALIZADA
public double getSaldo()
 {
   return saldo;
 }
}
class SaldoInsuficienteException extends Exception
{
  public SaldoInsuficienteException (String mensaje)
  {
    super(mensaje);
  }
}




PRACTICA

  Practica ejercicios realizado en taller
  modificarlos para colocarle las excepciones
  Modificar el ejercicio 4.1 pag. 201 .
  Pag. 185 polimorfismo




                                                                                       2   1
1   5   /   0   8   /   2   0   1   0




BIBLIOGRAFIA

 Sierre, Antonio J. Martín, programador java2
 curso practico, alfamomega, México 2007




                                                                                2   2

Más contenido relacionado

La actualidad más candente

Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasJosé Antonio Sandoval Acosta
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosJosé Antonio Sandoval Acosta
 
Cuestionario
CuestionarioCuestionario
Cuestionariojpauly4
 
Planificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de softwarePlanificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de softwareovefa
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en javajent46
 
Algoritmos Voraces - Dijkstra
Algoritmos Voraces - DijkstraAlgoritmos Voraces - Dijkstra
Algoritmos Voraces - DijkstraCarlos Uscamayta
 
Java – ejercicio 2
Java – ejercicio 2Java – ejercicio 2
Java – ejercicio 2ayreonmx
 
simulacion numeros pseudoaleatorios
simulacion numeros pseudoaleatoriossimulacion numeros pseudoaleatorios
simulacion numeros pseudoaleatoriosAnel Sosa
 
Expo 7 programación entera (algoritmo de gomory)
Expo 7   programación entera (algoritmo de gomory)Expo 7   programación entera (algoritmo de gomory)
Expo 7 programación entera (algoritmo de gomory)Ayda Ramirez Montalvo
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaAme Linares Vivas
 
Proyecto en Java: Tienda de productos electrónicos
Proyecto en Java: Tienda de productos electrónicosProyecto en Java: Tienda de productos electrónicos
Proyecto en Java: Tienda de productos electrónicosMiguel Angel López Moyano
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)programadorjavablog
 

La actualidad más candente (20)

Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
 
PRACTICA 2 ALICE
PRACTICA 2 ALICEPRACTICA 2 ALICE
PRACTICA 2 ALICE
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Planificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de softwarePlanificación de un proyecto de ingeniería de software
Planificación de un proyecto de ingeniería de software
 
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
 
Alice 11
Alice 11Alice 11
Alice 11
 
Algoritmos Voraces - Dijkstra
Algoritmos Voraces - DijkstraAlgoritmos Voraces - Dijkstra
Algoritmos Voraces - Dijkstra
 
Java – ejercicio 2
Java – ejercicio 2Java – ejercicio 2
Java – ejercicio 2
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
simulacion numeros pseudoaleatorios
simulacion numeros pseudoaleatoriossimulacion numeros pseudoaleatorios
simulacion numeros pseudoaleatorios
 
Greenfoot 3
Greenfoot 3Greenfoot 3
Greenfoot 3
 
Expo 7 programación entera (algoritmo de gomory)
Expo 7   programación entera (algoritmo de gomory)Expo 7   programación entera (algoritmo de gomory)
Expo 7 programación entera (algoritmo de gomory)
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en Java
 
Tipos de datos Java
Tipos de datos JavaTipos de datos Java
Tipos de datos Java
 
Proyecto en Java: Tienda de productos electrónicos
Proyecto en Java: Tienda de productos electrónicosProyecto en Java: Tienda de productos electrónicos
Proyecto en Java: Tienda de productos electrónicos
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Greenfoot 5
Greenfoot 5Greenfoot 5
Greenfoot 5
 

Destacado (20)

excepciones en java
excepciones en javaexcepciones en java
excepciones en java
 
Programación III (Java) - 04 Excepciones
Programación III (Java) - 04 ExcepcionesProgramación III (Java) - 04 Excepciones
Programación III (Java) - 04 Excepciones
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en Java
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3
 
Verbos pronominales
Verbos pronominalesVerbos pronominales
Verbos pronominales
 
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
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5
 
Pronominal
Pronominal Pronominal
Pronominal
 
Apuntes reflexive verbs
Apuntes reflexive verbsApuntes reflexive verbs
Apuntes reflexive verbs
 
Apuntes gusta x gustan
Apuntes gusta x gustanApuntes gusta x gustan
Apuntes gusta x gustan
 
Verb conjugation class 601
Verb conjugation class 601Verb conjugation class 601
Verb conjugation class 601
 
Ir
IrIr
Ir
 
Verbos le y se
Verbos le y seVerbos le y se
Verbos le y se
 
Lista simple
Lista simpleLista simple
Lista simple
 
Los Verbos Reflexivos
Los Verbos ReflexivosLos Verbos Reflexivos
Los Verbos Reflexivos
 
Los verbos reflexivos
Los verbos reflexivosLos verbos reflexivos
Los verbos reflexivos
 
Verbos pronominales
Verbos pronominalesVerbos pronominales
Verbos pronominales
 
Sistema pronominal. pronombres personales
Sistema pronominal. pronombres personalesSistema pronominal. pronombres personales
Sistema pronominal. pronombres personales
 
05 java excepciones
05 java excepciones05 java excepciones
05 java excepciones
 

Similar a Java excepciones (20)

Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Java5
Java5Java5
Java5
 
Resumen
ResumenResumen
Resumen
 
3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string
 
3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string
 
Gestion de errores en java
Gestion de errores en javaGestion de errores en java
Gestion de errores en java
 
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
 
Capitulo II
Capitulo IICapitulo II
Capitulo II
 
Manejo Estructurado De Excepciones
Manejo Estructurado De ExcepcionesManejo Estructurado De Excepciones
Manejo Estructurado De Excepciones
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Java oo tema09_excepciones
Java oo tema09_excepcionesJava oo tema09_excepciones
Java oo tema09_excepciones
 
Jyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc java-cap12 excepciones
Jyoc java-cap12 excepciones
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Tipos de excepciones
 
Capitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaCapitulo 16- Excepciones en Java
Capitulo 16- Excepciones en Java
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Gestión de Excepciones
Gestión de ExcepcionesGestión de Excepciones
Gestión de Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 

Último

codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 

Último (20)

codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 

Java excepciones

  • 1. 1 5 / 0 8 / 2 0 1 0 ISC. Maribel bueno quiñones ISC/MC. María Elena montes Almanza ISC/ME. Pedro celestino Ramírez JAVA / EXCEPCIONES EXCEPCIONES Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como pude ser un intento de división entera entre 0, un acceso a posición de un array fuera de los limites del mismo o un fallo durante la lectura de datos de la entrada / salida. 1
  • 2. 1 5 / 0 8 / 2 0 1 0 EXCEPCIONES Mediante la captura de excepciones, java proporciona un mecanismo que permite al programa sobreponerse a estas situaciones, pudiendo el programador decidir las acciones a realizar para cada tipo de excepción que pueda ocurrir. EXCEPCIONES Además de excepciones, en un programa java pueden producirse errores. Un error representa una situación anormal irreversible, como por ejemplo un fallo de la maquina virtual. Por regla general, un programa no deberá intentar recuperarse de un error, dado que son situaciones que se escapan al control del programador 2
  • 3. 1 5 / 0 8 / 2 0 1 0 EXCEPCIONES EXCEPCIONES Cada tipo de excepción esta representada por una subclase de Exception mientras que los errores son subclases de Error Ambas clases, Error. Exception y Error son subclases de Trhowable Error, Trhowable. object Throwable Exception Error Excepciones Errores 3
  • 4. 1 5 / 0 8 / 2 0 1 0 CLASES DE EXCEPCIÓN Al producirse una excepción en un programa, se crea un objeto de la subclase de la Exception a la que pertenece la excepción. Como veremos mas adelante, este objeto puede ser utilizado por el programa durante el tratamiento de la excepción para obtener información de la mismo. JERARQUIA DE CLASES / EXCEPCIONES HABITUALES Exception RuntimeException IOException SQLException .. ArithmeticException NullPointerException IndexOutOfBoundException ClassCastException : 4
  • 5. 1 5 / 0 8 / 2 0 1 0 TIPOS DE EXCEPCIONES Desde el punto de vista del tratamiento de una excepción dentro de un programa, hay que tener en cuenta que todas estas clases de excepción se dividen en dos grandes grupo. marcadas. Excepciones marcadas. Excepciones no marcadas. marcadas. EXCEPCIONES MARCADAS. Captura obligatoria. Se producen al invocar ciertos métodos de determinadas clases y son generadas (lanzadas). Todas as clases de excepciones, salvo RuntimeException y sus subclases, pertenecen a este tipo. Un ejemplo de excepción marcada es IOException IOException. Esta excepción es lanzada por el método readLine() readLine() de la clase BufferedReader cuando se produce un error durante la operación de lectura. 5
  • 6. 1 5 / 0 8 / 2 0 1 0 EXCEPCIONES MARCADAS. Si en un bloque de código se invoca a algún método que puede provocar una excepción marcada y esta no se captura, el programa no se compilara. DECLARACIÓN DE UNA EXCEPCIÓN Los métodos que pueden provocar excepciones marcadas, deben declarar estas en la definición del método. Para declarar una excepción se utiliza la palabra throws throws, seguida de la lista de excepciones que el método puede provocar: public String readLine() throws IOException Public void service(…) throws ServletException, IOException Así siempre que vayamos a utilizar algún método que tenga declaradas excepciones, hemos de tener presente que estamos obligados a capturar dichas excepciones. 6
  • 7. 1 5 / 0 8 / 2 0 1 0 EXCEPCIONES NO MARCADAS Pertenecen a este grupo todas las excepciones de tiempo de ejecución, es decir, RuntimeException y todas sus subclases. EXCEPCIONES NO MARCADAS No es obligatorio capturar dentro de un programa java una excepción no marcada, el motivo es que gran parte de ellas (NullPointerException, NullPointerException, NullPointerException ClassCastException, etc. ClassCastException, etc.,) se producen como consecuencia de una mala programación, por lo que la solución no debe pasar por prepara al programa para que sea capaz de recuperarse ante una situación como ésta, sino por evitar que se produzca. Tan sólo las excepciones de tipo ArithmeticException es recomendable capturarlas. 7
  • 8. 1 5 / 0 8 / 2 0 1 0 EXCEPCIONES NO MARCADAS Si durante la ejecución de un programa java se produce una excepción y ésta no capturada, la maquina virtual provoca la finalización inmediata del mismo, enviando a la consola el volcado de pila con los datos de la excepción a la consola, estos volcados de pila permiten al programador detectar fallos de programación durante la depuración del mismo. EJEMPLO EXCEPCIONES NO MARCADAS Ocurre excepción public class Division por { división public static void main (String[] args) por cero { int k=4/0; } } Volcado de la pila 8
  • 9. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES try { // instrucciones donde se pueden producir excepciones } catch { } finally { } Proporcionan una forma elegante y estructurada de capturar excepciones dentro de un programa java, CAPTURA DE EXCEPCIONES try : elimina aquella o aquellas instrucciones donde se puede producir una excepción. Cuando esto sucede, el control del programa se transfiere al bloque catch definido para el tipo de excepción que se ha producido, pasándole como parámetro la excepción lanzada. 9
  • 10. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES catch : define las instrucciones que deberán ejecutarse en caso en caso de que produzca un determinado tipo de excepción. CAPTURA DE EXCEPCIONES catch : debe considerar lo siguiente: Puede haber tantos bloques catch como considere necesario. Cada catch servirá para tratar un determinado tipo de excepción. No pudiendo haber dos o mas catch que tengan declarada la misma clase excepción. de excepción 1 0
  • 11. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES Un bloque catch sirve para capturar cualquier excepción que se corresponde con el tipo declarado o cualquiera de sus subclases. Catch (RuntimeException e) { : } Produciría cualquiera (NullPointerException, ArithmeticException, etc.) CAPTURA DE EXCEPCIONES Aunque haya varios posibles catch que puedan capturar una excepción, solo uno de ellos será ejecutado cuando ésta se produzca. produzca El primer catch que coincidente será el que se ejecutará. 1 1
  • 12. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES finally. finally. Una vez terminada la ejecución, el control del programa se transferirá al bloque finally o si no existe a la instrucción siguiente al ultimo bloque catch. CAPTURA DE EXCEPCIONES public class PruebaExcepcion { public static void main (String[] args) { try { int s=4/0; System.out.println("el programa sigue"); } catch (ArithmeticException e) { System.out.println("division por cero"); } catch (Exception e) { System.out.println("excepcion general"); } System.out.println("fin de main"); } } 1 2
  • 13. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES El control del programa nunca se devuelve al lugar donde se producido la excepción. En el caso de que existan varios catch cuyas excepciones están relacionadas por la herencia, los catch mas específicos deben de estar situados por delante de los mas genéricos. De no ser así, se producirá un error de compilación puesto que los bloques catch mas específicos nunca se ejecutaran. CAPTURA DE EXCEPCIONES public class PruebaExcepcion { public static void main (String[] args) { try { int s=4/0; System.out.println("el programa sigue"); } catch (Exception e) { System.out.println("excepcion general"); } catch (ArithmeticException e) { System.out.println("division por cero"); } System.out.println("fin de main"); } } 1 3
  • 14. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES Si se produce una excepción no marcada para la que no se ha definido bloque catch, ésta será propagada por la pila de llamadas hasta encontrar un punto en el que se trate la excepción. De no existir un tratamiento para la misma, la maquina virtual abortara la ejecución del programa y enviará un volcado de pila a la consola. CAPTURA DE EXCEPCIONES Método 1 Llamadas a método Método 2 ..Llamadas a método Propagación de la excepción Método n Excepción no tratada X Propagación de la excepción Propagación de una excepción en la pila de llamadas 1 4
  • 15. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES Los bloques catch son opcionales. Siempre que finally, existe un bloque finally la creación de bloques catch después de un try es opcional. Si no se cuenta con un bloque finally entonces es finally, obligatorio disponer de al menos un bloque catch. catch CAPTURA DE EXCEPCIONES finally: Se ejecuta tanto si se produces una excepción o no. Si se produce una excepción este se ejecuta después del bloque catch. El bloque finally se ejecutará antes de propagar la excepción. Si no se produce excepción alguna en el interior de try, el bloque finally se ejecutará tras la ultima instrucción del try. 1 5
  • 16. 1 5 / 0 8 / 2 0 1 0 CAPTURA DE EXCEPCIONES public class Excepcion { public static void main (String[] args) { try { int s=4/0; System.out.println("el programa sigue"); } catch (ArithmeticException e) { System.out.println("division por cero"); } catch (Exception e) { System.out.println("excepcion general"); } finally { System.out.println("ejecucion de finally"); Aun existiendo una instrucción para } System.out.println("fin de main"); la salida del método (return), el } bloque finally se ejecutará antes de } que esto suceda PROPAGACIÓN DE UNA EXCEPCIÓN En el caso de las excepciones marcadas, hemos visto cómo éstas deben ser capturadas obligatoriamente en un programa. Sin embargo, en el caso de que no se tenga previsto ninguna acción particular para el tratamiento de una determinada excepción de este tipo, es posible propagar la excepción sin necesidad de capturarla, dejando que sean otras partes del programa las encargadas de definir las acciones para su tratamiento. 1 6
  • 17. 1 5 / 0 8 / 2 0 1 0 PROPAGACIÓN DE UNA EXCEPCIÓN import java.io.*; public class ExcepcionIO { public static void main (String[] args) { BufferedReader b=new BufferedReader(new InputStreamReader(System.in)); try { imprime(b); } catch (IOException e) { System.out.println("error en la lectura"); } finally { System.out.println("ejecucion de finally"); } System.out.println("fin de main"); } static void imprime(BufferedReader bf) throws IOException { String n=bf.readLine(); //puede provocar una excepcion System.out.println(n); } } LANZAMIENTO DE UNA EXCEPCIÓN En determinados casos puede resultar útil generar y lanzar un excepción desde el interior de un determinado método. Esto puede utilizarse como un medio para enviar un aviso a otra parte del programa, indicándole que algo está sucediendo y no es posible continuar con la ejecución del normal del método. Para lanzar una excepción desde el código utilizamos la expresión: objeto_excepcion; Throw objeto_excepcion; Objeto_excepcion es un objeto de alguna subclase de Exception 1 7
  • 18. 1 5 / 0 8 / 2 0 1 0 EJEMPLO CAJERO public class Cajero { public static void main (String[] args) { Cuenta c=new Cuenta(); try { c.ingresar(100); c.extraer(200); } catch (Exception e) { System.out.println("la cuenta no puede "+ " quedar en numeros rojos"); //lo ideal es manejar este objeto System.out.println(e.getMessage()); } } } EJEMPLO CUENTA class Cuenta { double saldo; public Cuenta() { saldo=0; } public void ingresar(double c) { saldo+=c; } // el metodo declara la excepcion que puede Cuando se lanza una // caudar una excepcion. public void extraer(double c) throws Exception excepción marcada desde el { if (saldo<c) método (todas lo son salvo { // creacion y lanzamiento de la excepcion RumtimeException y sus } throw new Exception("el saldo es menor al retiro"); subclases) esta debe ser else { declarada en la cabecera del } saldo-=c; método para que se pueda } public double getSaldo() propagar al punto de llamada { return saldo; al mismo. } } 1 8
  • 19. 1 5 / 0 8 / 2 0 1 0 MÉTODOS PARA EL CONTROL DE UNA EXCEPCIÓN getMessage() mensaje osociado a la excepción. printStackTrace() envía a consola el volcado de pila, para ver errores de varias excepciones. printStackTrace(PrintStream s) permite enviar el volcado de pila a un objeto como un archivo. CLASES DE EXCEPCIONES PERSONALIZADAS Cuando un método necesita lanzar una excepción como forma de notificar una situación anómala, puede suceder que las clases de excepciones existentes no se adecuen a las características de las situación que quiere notificar. Por ejemplo en el caso anterior seria mas eficiente un excepción de saldoInsuficiente. Siendo mas eficiente una excepción personalizada 1 9
  • 20. 1 5 / 0 8 / 2 0 1 0 CAJERO EXCEPCIÓN PERSONALIZADA public class CajeroExc { public static void main (String[] args) { Cuenta c=new Cuenta(); try { c.ingresar(100); c.extraer(20); } catch (SaldoInsuficienteException e) { System.out.println("la cuenta no puede "+ " quedar en numeros rojos"); //lo ideal es manejar este objeto System.out.println(e.getMessage()); } } } CAJERO EXCEPCIÓN PERSONALIZADA class Cuenta { double saldo; public Cuenta() { saldo=0; } public void ingresar(double c) { saldo+=c; } // el metodo declara la excepcion que puede // causar una excepcion. public void extraer(double c) throws SaldoInsuficienteException { if (saldo<c) { // creacion y lanzamiento de la excepcion throw new SaldoInsuficienteException("el saldo es menor al retiro"); } else { saldo-=c; } } public double getSaldo() { return saldo; } } 2 0
  • 21. 1 5 / 0 8 / 2 0 1 0 CAJERO EXCEPCIÓN PERSONALIZADA public double getSaldo() { return saldo; } } class SaldoInsuficienteException extends Exception { public SaldoInsuficienteException (String mensaje) { super(mensaje); } } PRACTICA Practica ejercicios realizado en taller modificarlos para colocarle las excepciones Modificar el ejercicio 4.1 pag. 201 . Pag. 185 polimorfismo 2 1
  • 22. 1 5 / 0 8 / 2 0 1 0 BIBLIOGRAFIA Sierre, Antonio J. Martín, programador java2 curso practico, alfamomega, México 2007 2 2