20
ESCUELA POLITECNICA DEL EJERCITO INGENIERIA MECATRONICA PROGRAMACION II

Excepciones

Embed Size (px)

DESCRIPTION

Excepciones

Citation preview

Page 1: Excepciones

ESCUELA POLITECNICA DEL

EJERCITOINGENIERIA MECATRONICA

PROGRAMACION II

Page 2: Excepciones

Uso de excepciones en Java Cuando un programa Java viola las restricciones semánticas del lenguaje (se produce

un error), la máquina virtual Java comunica este hecho al programa mediante una excepción. La aplicación Java no debe morir y generar un core (o un crash en caso del DOS), al contrario, se lanza (throw) una excepción y se captura (catch) para resolver esa situación de error.

Cuando esto ocurre, la máquina virtual Java crea un objeto de la clase exception o error y se notifica el hecho al sistema de ejecución. Se dice que se ha lanzado una excepción (“Throwing Exception”).

Page 3: Excepciones

En el momento en que es lanzada una excepción, la máquina virtual Java recorre la pila de llamadas de métodos en busca de alguno que sea capaz de tratar la clase de excepción lanzada.

Para ello, comienza examinando el método donde ese ha producido la excepción; si este método no es capaz de tratarla, examina el método desde el que se realizó la llamada al método donde se produjo la excepción y así sucesivamente hasta llegar al último de ellos. En caso de que ninguno de los métodos de la pila sea capaz de tratar la excepción, la máquina virtual Java muestra un mensaje de error y el programa termina.

Los programas escritos en Java también pueden lanzar excepciones explícitamente mediante la instrucción throw, lo que facilita la devolución de un “código de error” al método que invocó el método que causó el error.

Page 4: Excepciones

Jerarquía de clases para el manejo de excepciones en Java

Page 5: Excepciones

Generación de Excepciones en Java

Partiendo de la base de que cualquier método puede lanzar excepciones en Java, es aconsejable tener declaradas todas las posibles excepciones que se puedan generar en dicho método, para lo cual se utilizará la cláusula throws de la declaración de métodos.

Para que se pueda lanzar una excepción es necesario crear un objeto de tipo Exception o alguna de sus subclases como ArithmeticException y lanzarlo mediante la instrucción throw

Page 6: Excepciones

Throwable

Clase base que representa todo lo que se puede “lanzar” en Java

Contiene una instantánea del estado de la pila en el momento en el que se creó el objeto ( “stack trace” o “call chain").

Almacena un mensaje (variable de instancia de tipo String)que podemos utilizar para detallar qué error se produjo.

Puede tener una causa, también de tipo Throwable,que permite representar el error que causó este error.

Page 7: Excepciones

Error

Subclase de Throwable que indica problemas graves que una aplicación

no debería intentar solucionar (documentación de Java).

Page 8: Excepciones

Excepción

Exception y sus subclases indican situaciones que una aplicacióndebería tratar de forma razonable. Los dos tipos principales de excepciones son:

RuntimeException (errores del programador, como una división

por cero o el acceso fuera de los límites de un array)

IOException (errores que no puede evitar el programador,

generalmente relacionados con la entrada/salida del programa).

Page 9: Excepciones

Captura de excepciones: Bloques try…catch

Se utilizan en Java para capturar las excepciones que se hayan podido producir en el bloque de código delimitado por try y catch.

En cuanto se produce la excepción, la ejecución del bloque try termina.

La cláusula catch recibe como argumento un objeto Throwable.

Page 10: Excepciones

El bloque try

Lo primero que hay que hacer para que un método sea capaz de tratar una excepción generada por la máquina virtual Java es encerrar las instrucciones susceptibles de generarla en un bloque try.

Page 11: Excepciones

Cualquier excepción que se produzca dentro del bloque try será analizado por el bloque o bloques catch que se verá en el punto siguiente. En el momento en que se produzca la excepción, se abandona el bloque try y, por lo tanto, las instrucciones que sigan al punto donde se produjo la excepción no serán ejecutadas.

Cada bloque try debe tener asociado al menos un bloque catch

Page 12: Excepciones

El bloque catch

Por cada bloque try pueden declararse uno o varios bloques catch, cada uno de

ellos capaz de tratar un tipo u otro de excepción.

Para declarar el tipo de excepción que es capaz de tratar un bloque catch, se declara un objeto cuya clase es la clase de la excepción que se desea tratar o una de sus superclases.

Page 13: Excepciones

El bloque finally

El bloque finally se utiliza para ejecutar un bloque de instrucciones sea cual sea la excepción que se produzca. Este bloque se ejecutará en cualquier caso, incluso si no se produce ninguna excepción. Sirve para no tener que repetir código en el bloque try y en los bloques catch

Page 14: Excepciones

Lanzamiento de excepcionesLa sentencia throw

Se utiliza en Java para lanzar objetos de tipo Throwable

throw new Exception(“Mensaje de error…”);

Cuando se lanza una excepción:

Se sale inmediatamente del bloque de código actual

Si el bloque tiene asociada una cláusula catch adecuada para el tipo de la excepción generada, se ejecuta el cuerpo de la cláusula catch.

Si no, se sale inmediatamente del bloque (o método) dentro del cual está el bloque en el que se produjo la excepción y se busca una cláusula catch apropiada.

El proceso continúa hasta llegar al método main de la aplicación. Si ahí tampoco existe una cláusula catch adecuada, la máquina virtual Java finaliza su ejecución con un mensaje de error.

Page 15: Excepciones

EJERCICIO DEL MANEJO DE EXCEPCIONES EN JAVA

Elabore un programa que contenga un array de 3 enteros y trate de ingresar un valor en la cuarta posición, ocurrirá un error, el programa

deberá manejar el error e imprimir un mensaje:

Page 16: Excepciones

import java.util.Scanner;

public class ProbarExcepciones{ public static void main(String[] args) { int posicion; posicion=3;//posicion del array contando desde el cero System.out.println("ARRAY DE DIMENSION 3");

Page 17: Excepciones

do { Scanner teclado = new Scanner(System.in); int numeros[] = new int[posicion];//declaracion del array try {

for(int i=0; i<numeros.length;i++)//ingreso de un array normal

{ System.out.println("Ingrese valor: "); numeros[i] = teclado.nextInt();

} numeros[3] = teclado.nextInt();//error que puede ocurrir }

Page 18: Excepciones

catch(Exception e)//excepcion para el error (mas utilizado”Exception”), existe para cada tipo de excepcion. {

System.out.println("No puedes introducir mas numeros, el ultimo valor no cuenta");//mensaje si se produce el error

}

Page 19: Excepciones

finally{//instrucciones que se cumplen sin importar si existe excepcion o no

System.out.println(""); System.out.println("El array quedaria con los

siguientes valores:"); for(int i=0; i<numeros.length;i++)//ingreso de un

array normal {

System.out.println(numeros[i]); }

} posicion++;//incremento del lazo }while(posicion < 3); }}

Page 20: Excepciones

CONSOLA