SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Java Excepciones 1
Excepciones
Object
Throwable
Exception Error
RuntimeException IOException
FileNotFoundException
Java Excepciones 2
Excepciones
Situaciones anómalas que aparecen
durante la ejecución de un programa
Cuando aparece una condición excepcional se
crea un objeto Throwable que se envía al
método que la ha generado
Java Excepciones 3
Excepciones
Su gestión permite la detección y corrección
de errores en ejecución
Simplifican los programas ya que se diferencia el
código normal del código de tratamiento de
errores
Se crean programas mas robustos ya que en
muchos casos si no se trata la excepción el
programa no compila
Sólo se deben usar cuando no se puede resolver
la situación anómala directamente en ese contexto
Se tiene que seguir haciendo el control de errores
habitual
Java Excepciones 4
Dos tipos de situaciones
excepcionales
Excepciones
Situaciones más o menos habituales que impiden
completar la ejecución correcta del código
Generalmente el programador debe proporcionar
el código que las trate o gestione
Ejemplos
Error en el código o en los datos
Uso inadecuado de un métod
Ejemplo, la excepción
ArrayIndexOutOfBoundsException no debería
lanzarse nunca si los índices de acceso a un vector
no se salen de los límites.
Java Excepciones 5
Dos tipos de situaciones
excepcionales
Errores
Representan situaciones de error
normalmente no recuperables
El programador normalmente no tiene que
proporcionar un tratamiento para ellas
Ejemplos
No se puede localizar y cargar una clase, Se
agota la memoria
Java Excepciones 6
Tipos de excepciones
Predefinidas en el sistema
Se lanzan automáticamente cuando se realiza
alguna operación no valida
acceso a un objeto que no existe,
acceso a una posición de un array que no existe,
división por cero
Generadas por el programador
El programa explícitamente genera una excepción
al detectar una situación de error que no se puede
resolver en ese contexto
Útil en situaciones de prueba y depuración
Java Excepciones 7
Ejemplo
public class HolaMundo {
public static void main (String args[]){
int i = 0;
String vectorS [] = {
"Hola mundo1",
"Hola mundo 2",
"Hola mundo 3" };
while (i < 4 ) {
System.out.println(vectorS[i]);
i++; }
}
}
Java Excepciones 8
Ejemplo
c:...>java HolaMundo
HolaMundo 1
HolaMundo 2
HolaMundo 3
java,lang.ArrayIndexOutBoundsException : 3
at HolaMundo.main(HolaMundo.java:12)
Java Excepciones 9
Tipos de excepciones
Object
Throwable
Solo se puede
hacer throuh a
las throwables
ExceptionError
RecuperableNo Recuperable
Runtime Exception
Nuestras
excepciones
. . .
. . . . . .
Java Excepciones 10
Gestión de excepciones
Para gestionar excepciones hay que insertar
el código donde se puede dar dentro de un
bloque try.
Se crea una lista de bloques catch
adyacentes, uno por cada posible
excepción.
Java Excepciones 11
Gestión de excepciones
Sintaxis
try {
// bloque de código donde puede producirse una excepción
}catch( TipoExcepción1 e ) {
// gestor de excepciones para TipoExcepción1
// se ejecuta si se produce una excepción de tipo TipoExcepción1
}catch( TipoExcepcion2 e ) {
// gestor de excepciones para TipoExcepción2
throw(e); // se puede volver a lanzar la excepción propagar
} finally {
// bloque de código que se ejecuta siempre, haya o no excepción
}
try {
// bloque de código donde puede producirse una excepción
}catch( TipoExcepción1 e ) {
// gestor de excepciones para TipoExcepción1
// se ejecuta si se produce una excepción de tipo TipoExcepción1
}catch( TipoExcepcion2 e ) {
// gestor de excepciones para TipoExcepción2
throw(e); // se puede volver a lanzar la excepción propagar
} finally {
// bloque de código que se ejecuta siempre, haya o no excepción
}
Java Excepciones 12
Gestión de excepciones
try { /*...*/}
catch (OverflowException e) { /*...*/}
catch (MathError e) { /*...*/}
catch (Exception e) { /*...*/}
finally{ /*...*/}
MathError
Exception
OverflowException
Java Excepciones 13
Gestión de excepciones
finally
Es el bloque de código que se ejecuta siempre, haya o no
excepción
try {
inicioProceso ();
gestionProceso();
}
finally {
finProceso ();
}
La única situación en la que la sentencia finally no se
ejecuta es si se llama al método System.exit (), que
termina la ejecución del programa.
Java Excepciones 14
Gestión de excepciones
throw
Permite lanzar de forma explícita una excepción
Se puede utilizar para propagar una excepción
tratada parcialmente
Java Excepciones 15
Propagación de excepciones
Entorno Java
(Java runtime)
Entorno Java
(Java runtime)
Entorno Java
(Java runtime)
Entorno Java
(Java runtime)
Método main()Método main()
Primer métodoPrimer método
Segundo método
(Excepción generada aquí)
Segundo método
(Excepción generada aquí)
Llamadas
métodos
Paso de
excepciones
Todas las excepciones que se puedan generar se han de manejar o delegar
Java Excepciones 16
Propagación de excepcionesfee()
try
{
//...
fie();
//...
}
catch (X e)
{
//...
}
finally
{
//...
}
try
{
//...
foe();
//...
}
finally
{
//...
}
//...
throw
new X();
//...
fie()
throws X
foe()
throws X
Java Excepciones 17
Excepciones
RuntimeExceptions
ArrayIndexOutOfBoundsExce
ption
ArithmeticException
NullPointerException
ClassCastException
IllegalArgumentException
No es obligatorio
incluir código de
tratamiento de este tipo
de excepciones
aunque se puede
incluir dicho código
Java Excepciones 18
Ejemplo simple excepciones
public class PruebaExcepciones {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}
catch( ArithmeticException e ) {
System.out.println( "Division por cero" );
}
catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}
}
public class PruebaExcepciones {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}
catch( ArithmeticException e ) {
System.out.println( "Division por cero" );
}
catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}
}
Java Excepciones 19
Propagación de excepciones
public class PruebaExcepcion {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}catch( ArithmeticException e ) {
System.out.println( "Division por cero" );
throw e;
}catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
public class PruebaExcepcion {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}catch( ArithmeticException e ) {
System.out.println( "Division por cero" );
throw e;
}catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
Java Excepciones 20
throws
Indica que el código producirá una excepción, que
no se tratará dentro de él y se pasará al método
superior, utilizando la cláusula throws.
public void ejemploExcep () throws
IOException
A continuación de la palabra reservada throws
aparece una lista de todas las excepciones que se
pueden dar dentro del método y no serán
gestionadas.
Java Excepciones 21
Gestión incompleta de
excepciones
Si un método no gestiona o captura
todas las excepciones que puede
generar (excepto del tipo Error o
RuntimeException) debe especificarlo
mediante throws
TipoDevuelto nombreMetodo(argumentos) throws listaExcepciones
{ /* cuerpo del método */ }
TipoDevuelto nombreMetodo(argumentos) throws listaExcepciones
{ /* cuerpo del método */ }
Java Excepciones 22
Gestión incompleta de
excepciones
import java.io.*;
public class PruebaExcepciones {
public static char leer() throws IOException {
return (char) System.in.read();
}
public static void main(String args[]) {
try {
char car=leer();
System.out.println("Caracter: "+car);
} catch (IOException e) {
System.out.println("Error de entrada de datos");
}
}
import java.io.*;
public class PruebaExcepciones {
public static char leer() throws IOException {
return (char) System.in.read();
}
public static void main(String args[]) {
try {
char car=leer();
System.out.println("Caracter: "+car);
} catch (IOException e) {
System.out.println("Error de entrada de datos");
}
}
Java Excepciones 23
Lanzamiento de excepciones
public class Alumno{
public Alumno(String nombre, String apellidos)
throws Exception{
if(nombre == null || apellidos == null)
throw new Exception("Argumentos no válidos");
//si el constructor lanza la excepción el objeto
//no se crea
}
public static void main(String args[]) {
try{
Alumno alum = new Alumno(null, "hola");
}catch (Exception e){
System.out.println("Excepcion: "+
e.getMessage());
}
}
}
public class Alumno{
public Alumno(String nombre, String apellidos)
throws Exception{
if(nombre == null || apellidos == null)
throw new Exception("Argumentos no válidos");
//si el constructor lanza la excepción el objeto
//no se crea
}
public static void main(String args[]) {
try{
Alumno alum = new Alumno(null, "hola");
}catch (Exception e){
System.out.println("Excepcion: "+
e.getMessage());
}
}
}
Java Excepciones 24
Excepciones definidas por el
programador
El programador puede definir sus
propias clases de excepciones
Se define una clase que herede de
Throwable o más normalmente de
Exception
public class EdadFueraDeRangoException extends Exception {
public EdadFueraDeRangoException (String texto) {
super(texto);
}
}
Java Excepciones 25
Excepciones definidas por el
usuario
public class FileInputStream
extends InputStream{
public FileInputStream(String aFileName)
throws IOException {
if (...) {
throw new IOException("No Such
File");
}
...
}
...
}
Java Excepciones 26
Excepciones definidas por el
usuario
Gestiona la excepción, incluyendo en el
código los bloques try-catch-finally
Se considera que una excepción está tratada
incluso si el bloque catch está vacío.
Indica que el código producirá una excepción,
que no se tratará dentro de él y se pasará al
método superior, utilizando la cláusula
throws.
Java Excepciones 27
Excepciones definidas por el
usuario
public void ejemploExcep () throws
IOException
A continuación de la palabra reservada
throws aparece una lista de todas las
excepciones que se pueden dar dentro
del método y no serán gestionadas.
Java Excepciones 28
Ejemplo excepción definida por
el usuario
Public class Persona{
int edad;
.....
public void ponEdad(int ed) throws EdadFueraDeRangoException {
if ((ed < 0) || (ed > 130))
throw new EdadFueraDeRangoException("Demasiado joven o demasiado viejo");
edad = ed;
}}
try {
alguien.ponEdad(150);
} catch (EdadFueraDeRangoException e){
System.out.println("se ha producido la excepción");
e.printStackTrace();
System.out.println(e.getMessage());
}
EdadFueraDeRangoException: Demasiado joven o demasiado viejo
at Persona.ponEdad<Persona.java>
at Persona.main<Persona.java>
Java Excepciones 29
Ejemplo
public void connectMe (String serverName)
throws ServerTimedOutException {
int success;
int portToConnect = 80;
success = open (serverName,
portToConnect);
if (success == -1) {
throw new
ServerTimedOutException("Imposible
conectarse", 80);
}
}
Java Excepciones 30
Ejemplo
public void findServer(){
...
try {
connectMe(defaultServer);
} catch (ServerTimedOutException e) {
System.out.println ("Server timed out,
trying alternate");
try {
connectMe(alternateServer);
} catch (ServerTimedOutException e1) {
System.out.println("No server
currently available");}
}....
Java Excepciones 31
Excepciones más frecuentes
ArithmeticException
int i = 12 / 0;
NullPointerException
Date d = null;
System.out.println (d.toString());
NegativeArraySizeException
Intento de creación de un vector con un
número negativo de elementos
Java Excepciones 32
Excepciones más frecuentes
ArrayIndexOutOfSizeException
Intento de acceso a un elemento de un
vector fuera de rango
SecurityException
Error de seguridad en los navegadores.
Java Excepciones 33
Sobreescritura de métodos
public void test() throws ExceptionA
public void test() throws ExceptionB
ExceptionA
ExceptionB
sobre
escribe
extends
Java Excepciones 34
Sobreescritura de métodos
public void test() throws ExceptionA
public void test() throws ExceptionC
Exception
ExceptionC
sobre
escribe
extends
ExceptionA
No compila
Java Excepciones 35
Ejercicio 1: Exception
Un banco contiene las Cuentas de sus clientes. Las
CuentasDeAhorro no pueden tener números rojos. Las
CuentasCorrientes pueden tener una CuentaDeAhorro asociada, de
forma que si se intenta retirar más dinero del saldo actual, se debe
retirar el dinero que falte de la CuentaDeAhorro asociada.
1) Define Cuenta de forma que no pueda instanciarse. De toda
Cuenta se debe poder ingresar y retirar dinero, preguntar por el
saldo, por el DNI del titular y debe tener un método toString de
devuelva al menos el saldo y el DNI del titular.
Java Excepciones 36
Ejercicio
2) Implementa las clases CuentaCorriente y
CuentaDeAhorro.
3) Crea una especialización CuentaDeAhorroEsp de
CuentaDeAhorro en la que se añade un entero
penalización, de forma que se penaliza la retirada con un
penalización % del dinero retirado. Sobrescribe sólo los
métodos necesarios (incluyendo constructor y toString ).
4) Si el saldo de CuentaDeAhorro fuese a quedar
negativo, antes de debe lanzar una excepción
SaldoNegativo (que hereda de Exception).
Java Excepciones 37
Ejercicio
5) Implementa la clase Banco que contiene un array
polimórfico de Cuentas, incluyendo el constructor que
consideres más apropiado.
6) Incluye el método totalSaldoMaxPenalización en la
clase Banco que devuelva la suma de los saldos de todas
las cuentas corrientes y la máxima penalización entre las
CuentaDeAhorroEsp .
Crea una clase con método main en la que
instanciamos un Banco de 100 Cuentas, nos creamos una
CuentaCorriente con 500 euros y una cuenta de ahorrro
especial con una penalización del 5%. Finalmente debe
mostrar información de todas las Cuentas del Banco. En
un bloque try & catch retirar dinero de una cuenta de
Ahorro.

Contenu connexe

Tendances

Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesjbersosa
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en javajent46
 
Clase5 controldeflujo
Clase5 controldeflujoClase5 controldeflujo
Clase5 controldeflujojorg_marq
 
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 stringJacqui Venegas
 
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
 
Excepciones
ExcepcionesExcepciones
Excepcioneskattybe
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gioRobert Wolf
 
1 1 5 Objetos Excepcion
1 1 5 Objetos Excepcion1 1 5 Objetos Excepcion
1 1 5 Objetos ExcepcionUVM
 
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 stringJacqui Venegas
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...Oscar V
 
Clase string y manejo de excepciones
Clase string y manejo de excepcionesClase string y manejo de excepciones
Clase string y manejo de excepcionesAliciaSandovalCamacho
 

Tendances (20)

5.manejo de excepciones
5.manejo de excepciones5.manejo de excepciones
5.manejo de excepciones
 
Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesaserciones
 
Gestión de Excepciones
Gestión de ExcepcionesGestión de Excepciones
Gestión de Excepciones
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
unidad 5 excepciones propias
unidad 5 excepciones propiasunidad 5 excepciones propias
unidad 5 excepciones propias
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Clase5 controldeflujo
Clase5 controldeflujoClase5 controldeflujo
Clase5 controldeflujo
 
Resumen
ResumenResumen
Resumen
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
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
 
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
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
 
Expo métodos
Expo métodosExpo métodos
Expo métodos
 
1 1 5 Objetos Excepcion
1 1 5 Objetos Excepcion1 1 5 Objetos Excepcion
1 1 5 Objetos Excepcion
 
Taller 1 4
Taller 1 4Taller 1 4
Taller 1 4
 
Cap9 excepciones
Cap9 excepcionesCap9 excepciones
Cap9 excepciones
 
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
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
 
Clase string y manejo de excepciones
Clase string y manejo de excepcionesClase string y manejo de excepciones
Clase string y manejo de excepciones
 

En vedette

Excepciones
ExcepcionesExcepciones
Excepcionesrilara
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 ExcepcionesEmilio Aviles Avila
 
Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)jbersosa
 
Java exceptions
Java exceptionsJava exceptions
Java exceptionsDeli_amor
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006Samuel Marrero
 
J2EE Struts with Hibernate Framework
J2EE Struts with Hibernate FrameworkJ2EE Struts with Hibernate Framework
J2EE Struts with Hibernate Frameworkmparth
 
Clase 6 excepciones
Clase 6   excepcionesClase 6   excepciones
Clase 6 excepcionesJorge Gamez
 
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-20064. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006Samuel Marrero
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006Samuel Marrero
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006Samuel Marrero
 
Buceo En Aguas Profundas
Buceo En Aguas ProfundasBuceo En Aguas Profundas
Buceo En Aguas Profundasjent46
 
Html - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasHtml - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasRenny Batista
 

En vedette (20)

Unidad 5: Excepciones Ejercicio 2
Unidad 5: Excepciones Ejercicio 2Unidad 5: Excepciones Ejercicio 2
Unidad 5: Excepciones Ejercicio 2
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 Excepciones
 
Gestion de errores en java
Gestion de errores en javaGestion de errores en java
Gestion de errores en java
 
Unidad 5: Excepciones Ejercicio 1
Unidad 5: Excepciones Ejercicio 1Unidad 5: Excepciones Ejercicio 1
Unidad 5: Excepciones Ejercicio 1
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)
 
Java exceptions
Java exceptionsJava exceptions
Java exceptions
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
Unidad 6: Flujos y Archivos Ejercicio 4
Unidad 6: Flujos y Archivos Ejercicio 4Unidad 6: Flujos y Archivos Ejercicio 4
Unidad 6: Flujos y Archivos Ejercicio 4
 
J2EE Struts with Hibernate Framework
J2EE Struts with Hibernate FrameworkJ2EE Struts with Hibernate Framework
J2EE Struts with Hibernate Framework
 
Clase 6 excepciones
Clase 6   excepcionesClase 6   excepciones
Clase 6 excepciones
 
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-20064. Curso Java JSP (Java Server Pages) - Curso 2005-2006
4. Curso Java JSP (Java Server Pages) - Curso 2005-2006
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3Unidad 5: Excepciones Ejercicio 3
Unidad 5: Excepciones Ejercicio 3
 
Servidor HTTP Apache
Servidor HTTP ApacheServidor HTTP Apache
Servidor HTTP Apache
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
 
Buceo En Aguas Profundas
Buceo En Aguas ProfundasBuceo En Aguas Profundas
Buceo En Aguas Profundas
 
Html - Tema 1
Html - Tema 1Html - Tema 1
Html - Tema 1
 
Html - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasHtml - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y Listas
 

Similaire à Tema 10 excepciones

Similaire à Tema 10 excepciones (19)

Java exceptions
Java exceptionsJava exceptions
Java exceptions
 
excepciones en java
excepciones en javaexcepciones en java
excepciones en java
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Try catch
Try catchTry catch
Try catch
 
EXCEPCIONES JAVA
EXCEPCIONES JAVAEXCEPCIONES JAVA
EXCEPCIONES JAVA
 
11 Excepciones
11   Excepciones11   Excepciones
11 Excepciones
 
Capitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaCapitulo 16- Excepciones en Java
Capitulo 16- Excepciones en Java
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
Excepciones.pptx
Excepciones.pptxExcepciones.pptx
Excepciones.pptx
 
Clase x
Clase xClase x
Clase x
 
Lab excepciones propias
Lab excepciones propiasLab excepciones propias
Lab excepciones propias
 
Errores
ErroresErrores
Errores
 
Java4-Exepciones.ppt
Java4-Exepciones.pptJava4-Exepciones.ppt
Java4-Exepciones.ppt
 
Java4-Exepciones.ppt
Java4-Exepciones.pptJava4-Exepciones.ppt
Java4-Exepciones.ppt
 
11-Unidad 3: Encapsulamiento y modularidad
11-Unidad 3: Encapsulamiento y modularidad11-Unidad 3: Encapsulamiento y modularidad
11-Unidad 3: Encapsulamiento y modularidad
 
6 excepciones
6 excepciones6 excepciones
6 excepciones
 
Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standar
 
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
 

Plus de jbersosa

Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catchjbersosa
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistopjbersosa
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacionjbersosa
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principaljbersosa
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2jbersosa
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891jbersosa
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticajbersosa
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)jbersosa
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónjbersosa
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...jbersosa
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosjbersosa
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una redjbersosa
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2jbersosa
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportjbersosa
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportjbersosa
 
Continuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper reportContinuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper reportjbersosa
 

Plus de jbersosa (20)

Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Main
MainMain
Main
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Programación java1
Programación java1Programación java1
Programación java1
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistop
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacion
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principal
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Php
PhpPhp
Php
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una red
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper report
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
Continuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper reportContinuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper report
 

Tema 10 excepciones

  • 1. Java Excepciones 1 Excepciones Object Throwable Exception Error RuntimeException IOException FileNotFoundException Java Excepciones 2 Excepciones Situaciones anómalas que aparecen durante la ejecución de un programa Cuando aparece una condición excepcional se crea un objeto Throwable que se envía al método que la ha generado
  • 2. Java Excepciones 3 Excepciones Su gestión permite la detección y corrección de errores en ejecución Simplifican los programas ya que se diferencia el código normal del código de tratamiento de errores Se crean programas mas robustos ya que en muchos casos si no se trata la excepción el programa no compila Sólo se deben usar cuando no se puede resolver la situación anómala directamente en ese contexto Se tiene que seguir haciendo el control de errores habitual Java Excepciones 4 Dos tipos de situaciones excepcionales Excepciones Situaciones más o menos habituales que impiden completar la ejecución correcta del código Generalmente el programador debe proporcionar el código que las trate o gestione Ejemplos Error en el código o en los datos Uso inadecuado de un métod Ejemplo, la excepción ArrayIndexOutOfBoundsException no debería lanzarse nunca si los índices de acceso a un vector no se salen de los límites.
  • 3. Java Excepciones 5 Dos tipos de situaciones excepcionales Errores Representan situaciones de error normalmente no recuperables El programador normalmente no tiene que proporcionar un tratamiento para ellas Ejemplos No se puede localizar y cargar una clase, Se agota la memoria Java Excepciones 6 Tipos de excepciones Predefinidas en el sistema Se lanzan automáticamente cuando se realiza alguna operación no valida acceso a un objeto que no existe, acceso a una posición de un array que no existe, división por cero Generadas por el programador El programa explícitamente genera una excepción al detectar una situación de error que no se puede resolver en ese contexto Útil en situaciones de prueba y depuración
  • 4. Java Excepciones 7 Ejemplo public class HolaMundo { public static void main (String args[]){ int i = 0; String vectorS [] = { "Hola mundo1", "Hola mundo 2", "Hola mundo 3" }; while (i < 4 ) { System.out.println(vectorS[i]); i++; } } } Java Excepciones 8 Ejemplo c:...>java HolaMundo HolaMundo 1 HolaMundo 2 HolaMundo 3 java,lang.ArrayIndexOutBoundsException : 3 at HolaMundo.main(HolaMundo.java:12)
  • 5. Java Excepciones 9 Tipos de excepciones Object Throwable Solo se puede hacer throuh a las throwables ExceptionError RecuperableNo Recuperable Runtime Exception Nuestras excepciones . . . . . . . . . Java Excepciones 10 Gestión de excepciones Para gestionar excepciones hay que insertar el código donde se puede dar dentro de un bloque try. Se crea una lista de bloques catch adyacentes, uno por cada posible excepción.
  • 6. Java Excepciones 11 Gestión de excepciones Sintaxis try { // bloque de código donde puede producirse una excepción }catch( TipoExcepción1 e ) { // gestor de excepciones para TipoExcepción1 // se ejecuta si se produce una excepción de tipo TipoExcepción1 }catch( TipoExcepcion2 e ) { // gestor de excepciones para TipoExcepción2 throw(e); // se puede volver a lanzar la excepción propagar } finally { // bloque de código que se ejecuta siempre, haya o no excepción } try { // bloque de código donde puede producirse una excepción }catch( TipoExcepción1 e ) { // gestor de excepciones para TipoExcepción1 // se ejecuta si se produce una excepción de tipo TipoExcepción1 }catch( TipoExcepcion2 e ) { // gestor de excepciones para TipoExcepción2 throw(e); // se puede volver a lanzar la excepción propagar } finally { // bloque de código que se ejecuta siempre, haya o no excepción } Java Excepciones 12 Gestión de excepciones try { /*...*/} catch (OverflowException e) { /*...*/} catch (MathError e) { /*...*/} catch (Exception e) { /*...*/} finally{ /*...*/} MathError Exception OverflowException
  • 7. Java Excepciones 13 Gestión de excepciones finally Es el bloque de código que se ejecuta siempre, haya o no excepción try { inicioProceso (); gestionProceso(); } finally { finProceso (); } La única situación en la que la sentencia finally no se ejecuta es si se llama al método System.exit (), que termina la ejecución del programa. Java Excepciones 14 Gestión de excepciones throw Permite lanzar de forma explícita una excepción Se puede utilizar para propagar una excepción tratada parcialmente
  • 8. Java Excepciones 15 Propagación de excepciones Entorno Java (Java runtime) Entorno Java (Java runtime) Entorno Java (Java runtime) Entorno Java (Java runtime) Método main()Método main() Primer métodoPrimer método Segundo método (Excepción generada aquí) Segundo método (Excepción generada aquí) Llamadas métodos Paso de excepciones Todas las excepciones que se puedan generar se han de manejar o delegar Java Excepciones 16 Propagación de excepcionesfee() try { //... fie(); //... } catch (X e) { //... } finally { //... } try { //... foe(); //... } finally { //... } //... throw new X(); //... fie() throws X foe() throws X
  • 9. Java Excepciones 17 Excepciones RuntimeExceptions ArrayIndexOutOfBoundsExce ption ArithmeticException NullPointerException ClassCastException IllegalArgumentException No es obligatorio incluir código de tratamiento de este tipo de excepciones aunque se puede incluir dicho código Java Excepciones 18 Ejemplo simple excepciones public class PruebaExcepciones { public static void main(String args[]) { int valor=5, cero=0; int[] array = {1, 2, 3}; try { valor = valor/cero; //división por cero array[4]= 5; //acceso a una posición no disponible } catch( ArithmeticException e ) { System.out.println( "Division por cero" ); } catch( Exception e ) { System.out.println( "Se ha producido un error" ); } } } public class PruebaExcepciones { public static void main(String args[]) { int valor=5, cero=0; int[] array = {1, 2, 3}; try { valor = valor/cero; //división por cero array[4]= 5; //acceso a una posición no disponible } catch( ArithmeticException e ) { System.out.println( "Division por cero" ); } catch( Exception e ) { System.out.println( "Se ha producido un error" ); } } }
  • 10. Java Excepciones 19 Propagación de excepciones public class PruebaExcepcion { public static void main(String args[]) { int valor=5, cero=0; int[] array = {1, 2, 3}; try { try { valor = valor/cero; //división por cero array[4]= 5; //acceso a una posición no disponible }catch( ArithmeticException e ) { System.out.println( "Division por cero" ); throw e; }catch( Exception e ) { System.out.println( "Se ha producido un error" ); } }catch(Exception e){ System.out.println(e.getMessage()); } } } public class PruebaExcepcion { public static void main(String args[]) { int valor=5, cero=0; int[] array = {1, 2, 3}; try { try { valor = valor/cero; //división por cero array[4]= 5; //acceso a una posición no disponible }catch( ArithmeticException e ) { System.out.println( "Division por cero" ); throw e; }catch( Exception e ) { System.out.println( "Se ha producido un error" ); } }catch(Exception e){ System.out.println(e.getMessage()); } } } Java Excepciones 20 throws Indica que el código producirá una excepción, que no se tratará dentro de él y se pasará al método superior, utilizando la cláusula throws. public void ejemploExcep () throws IOException A continuación de la palabra reservada throws aparece una lista de todas las excepciones que se pueden dar dentro del método y no serán gestionadas.
  • 11. Java Excepciones 21 Gestión incompleta de excepciones Si un método no gestiona o captura todas las excepciones que puede generar (excepto del tipo Error o RuntimeException) debe especificarlo mediante throws TipoDevuelto nombreMetodo(argumentos) throws listaExcepciones { /* cuerpo del método */ } TipoDevuelto nombreMetodo(argumentos) throws listaExcepciones { /* cuerpo del método */ } Java Excepciones 22 Gestión incompleta de excepciones import java.io.*; public class PruebaExcepciones { public static char leer() throws IOException { return (char) System.in.read(); } public static void main(String args[]) { try { char car=leer(); System.out.println("Caracter: "+car); } catch (IOException e) { System.out.println("Error de entrada de datos"); } } import java.io.*; public class PruebaExcepciones { public static char leer() throws IOException { return (char) System.in.read(); } public static void main(String args[]) { try { char car=leer(); System.out.println("Caracter: "+car); } catch (IOException e) { System.out.println("Error de entrada de datos"); } }
  • 12. Java Excepciones 23 Lanzamiento de excepciones public class Alumno{ public Alumno(String nombre, String apellidos) throws Exception{ if(nombre == null || apellidos == null) throw new Exception("Argumentos no válidos"); //si el constructor lanza la excepción el objeto //no se crea } public static void main(String args[]) { try{ Alumno alum = new Alumno(null, "hola"); }catch (Exception e){ System.out.println("Excepcion: "+ e.getMessage()); } } } public class Alumno{ public Alumno(String nombre, String apellidos) throws Exception{ if(nombre == null || apellidos == null) throw new Exception("Argumentos no válidos"); //si el constructor lanza la excepción el objeto //no se crea } public static void main(String args[]) { try{ Alumno alum = new Alumno(null, "hola"); }catch (Exception e){ System.out.println("Excepcion: "+ e.getMessage()); } } } Java Excepciones 24 Excepciones definidas por el programador El programador puede definir sus propias clases de excepciones Se define una clase que herede de Throwable o más normalmente de Exception public class EdadFueraDeRangoException extends Exception { public EdadFueraDeRangoException (String texto) { super(texto); } }
  • 13. Java Excepciones 25 Excepciones definidas por el usuario public class FileInputStream extends InputStream{ public FileInputStream(String aFileName) throws IOException { if (...) { throw new IOException("No Such File"); } ... } ... } Java Excepciones 26 Excepciones definidas por el usuario Gestiona la excepción, incluyendo en el código los bloques try-catch-finally Se considera que una excepción está tratada incluso si el bloque catch está vacío. Indica que el código producirá una excepción, que no se tratará dentro de él y se pasará al método superior, utilizando la cláusula throws.
  • 14. Java Excepciones 27 Excepciones definidas por el usuario public void ejemploExcep () throws IOException A continuación de la palabra reservada throws aparece una lista de todas las excepciones que se pueden dar dentro del método y no serán gestionadas. Java Excepciones 28 Ejemplo excepción definida por el usuario Public class Persona{ int edad; ..... public void ponEdad(int ed) throws EdadFueraDeRangoException { if ((ed < 0) || (ed > 130)) throw new EdadFueraDeRangoException("Demasiado joven o demasiado viejo"); edad = ed; }} try { alguien.ponEdad(150); } catch (EdadFueraDeRangoException e){ System.out.println("se ha producido la excepción"); e.printStackTrace(); System.out.println(e.getMessage()); } EdadFueraDeRangoException: Demasiado joven o demasiado viejo at Persona.ponEdad<Persona.java> at Persona.main<Persona.java>
  • 15. Java Excepciones 29 Ejemplo public void connectMe (String serverName) throws ServerTimedOutException { int success; int portToConnect = 80; success = open (serverName, portToConnect); if (success == -1) { throw new ServerTimedOutException("Imposible conectarse", 80); } } Java Excepciones 30 Ejemplo public void findServer(){ ... try { connectMe(defaultServer); } catch (ServerTimedOutException e) { System.out.println ("Server timed out, trying alternate"); try { connectMe(alternateServer); } catch (ServerTimedOutException e1) { System.out.println("No server currently available");} }....
  • 16. Java Excepciones 31 Excepciones más frecuentes ArithmeticException int i = 12 / 0; NullPointerException Date d = null; System.out.println (d.toString()); NegativeArraySizeException Intento de creación de un vector con un número negativo de elementos Java Excepciones 32 Excepciones más frecuentes ArrayIndexOutOfSizeException Intento de acceso a un elemento de un vector fuera de rango SecurityException Error de seguridad en los navegadores.
  • 17. Java Excepciones 33 Sobreescritura de métodos public void test() throws ExceptionA public void test() throws ExceptionB ExceptionA ExceptionB sobre escribe extends Java Excepciones 34 Sobreescritura de métodos public void test() throws ExceptionA public void test() throws ExceptionC Exception ExceptionC sobre escribe extends ExceptionA No compila
  • 18. Java Excepciones 35 Ejercicio 1: Exception Un banco contiene las Cuentas de sus clientes. Las CuentasDeAhorro no pueden tener números rojos. Las CuentasCorrientes pueden tener una CuentaDeAhorro asociada, de forma que si se intenta retirar más dinero del saldo actual, se debe retirar el dinero que falte de la CuentaDeAhorro asociada. 1) Define Cuenta de forma que no pueda instanciarse. De toda Cuenta se debe poder ingresar y retirar dinero, preguntar por el saldo, por el DNI del titular y debe tener un método toString de devuelva al menos el saldo y el DNI del titular. Java Excepciones 36 Ejercicio 2) Implementa las clases CuentaCorriente y CuentaDeAhorro. 3) Crea una especialización CuentaDeAhorroEsp de CuentaDeAhorro en la que se añade un entero penalización, de forma que se penaliza la retirada con un penalización % del dinero retirado. Sobrescribe sólo los métodos necesarios (incluyendo constructor y toString ). 4) Si el saldo de CuentaDeAhorro fuese a quedar negativo, antes de debe lanzar una excepción SaldoNegativo (que hereda de Exception).
  • 19. Java Excepciones 37 Ejercicio 5) Implementa la clase Banco que contiene un array polimórfico de Cuentas, incluyendo el constructor que consideres más apropiado. 6) Incluye el método totalSaldoMaxPenalización en la clase Banco que devuelva la suma de los saldos de todas las cuentas corrientes y la máxima penalización entre las CuentaDeAhorroEsp . Crea una clase con método main en la que instanciamos un Banco de 100 Cuentas, nos creamos una CuentaCorriente con 500 euros y una cuenta de ahorrro especial con una penalización del 5%. Finalmente debe mostrar información de todas las Cuentas del Banco. En un bloque try & catch retirar dinero de una cuenta de Ahorro.