SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Prof. Renny Batista Programación IIIOctubre, 2015
Excepciones
La filosofía básica de Java es que "el código mal formado
no se ejecutará".
Excepción
¿Qué es una excepción?
La palabra excepción indica una irregularidad en el software que se inicia en
alguna sentencia del código al encontrar una condición anormal; no se debe
confundir con una excepción hardware.
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.
Error
¿Qué es un error?
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.
Cada tipo de excepción está representada por una subclase de Exception, mientras
que los errores son subclases de Error. Ambas clases (Exception y Error), son
subclases de Throwable.
Object
ErrorException
Throwable
Excepciones Errores
Excepciones y condiciones anormales
Como se mencionó, las excepciones son eventos anormales que ocurren
durante la ejecución del programa, a continuación tenemos algunos ejemplos
que lanzan excepciones:
Cuando un número es dividido entre cero.
Cuando se accede a un elemento de un arreglo que este fuera del límite
del arreglo.
Cuando existe una condición de desborde (overflow) durante la asignación
de valores a variables numéricas.
Cuando un recurso es requerido por la aplicación y no está disponible.
Cuando se requiere de un archivo para lectura, y el mismo no se encuentra
disponible en el sistema de archivos.
Cuando la aplicación accede a recursos del sistema sin autorización.
Secuencias de acciones cuando se produce una excepción
El manejador de
excepciones recibe la
excepción
Analiza la naturaleza de
la excepción
Crea un “objeto exception”
apropiado a través del manejador
Prepara el “objeto exception” para ser
manejado por el sistema en tiempo de
ejecución
Sistema de
tiempo de
ejecución
Localiza en la pila de llamadas la entrada del
método en el cual ocurrió al condición de error
¿La excepción
lanzada es de
igual al tipo a
la manejada?
Error
Localiza el manejador de excepciones
apropiado para esta excepción
Preparar para capturar la
excepción
Se desciende en la pila de llamadas para
localizar el próximo manejador
¿Hay más
manejadore
s en la pila?
Detiene el
sistema en
tiempo de
ejecución
Igual
Diferente
Si
No
Clases de Excepción
Al producirse una excepción en un programa, se crea un objeto de la subclase de Exception a
la que pertenece la excepción.
Java.lang-Exceptions
http://gallerily.com/java+exceptions+tree?image=867525489
Tipos de Excepciones
Desde el punto de vista del tratamiento de una excepción dentro de un
programa, todas las clases de excepción se dividen en dos grandes grupos:
Excepciones marcadas
Excepciones no marcadas
Excepciones Marcadas
Son aquellas cuya captura es obligatoria. Normalmente, este tipo de
excepciones se producen al invocar a ciertos métodos de determinadas
clases y son lanzadas desde el interior de dichos métodos como
consecuencia de algún fallo durante la ejecución de los mismos.
Todas las clases de excepciones, salvo RuntimeException y sus subclases,
pertenecen a este tipo.
Declaración de excepciones marcadas
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, seguida de la lista de
excepciones que el método puede provocar.
public class Nombre_Clase {
public String readLine() throws IOException {
//Código del método
}
public void Service() throws ServletException, IOException {
//Código del método
}
}
Excepciones que puede
“lanzar” el método
Excepciones no marcadas
Pertenecen a este grupo todas las excepciones de tiempo de ejecución, es decir,
RuntimeException y todas sus clases.
No es obligatorio capturar dentro de un programa Java una excepción no
marcada, el motivo es que gran parte de ellas, se producen como consecuencias
de una mala programación, por lo que la solución está en evitar que se
produzcan.
Excepciones no marcadas
Instrucción que genera una
excepción (División por cero)
Volcado de pila
(programa abortado)
Datos de la excepción
lanzada
Captura de excepciones
Los bloques try…catch…finally
Las instrucciones try, catch y finally proporcionan una forma elegante y estructurada
de capturar excepciones dentro de un programa Java, evitando la utilización de
instrucciones de control que dificultarían la lectura del código y lo harían más
propenso a errores.
try {
//Instrucciones donde se puede producir excepciones
} catch (Tipo_de_excepcion Argumento) {
//Tratamiento excepcion 1
} catch (Tipo_de_excepcion Argumento) {
//Tratamiento excepcion 2
} finally {
//Instrucciones de ultima ejecución
}
Lista de sentencias que
procesan la excepción
Tipo de excepción
a procesar
Nombre del objeto excepción
transferido al manejador
Captura de excepciones
El bloque try delimita aquella o aquellas instrucciones dónde 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.
Un bloque catch define las instrucciones que deberán ejecutarse en caso de que se
produzca un determinado tipo de excepción. Sobre la utilización de los bloques catch se
debe tener en cuenta lo siguiente:
 Se pueden definir tantos bloques catch como se considere necesario. Cada bloque catch servirá
para tratar un determinado tipo de excepción, no pudiendo haber dos o más catch que tengan
declarada la misma clase de excepción.
 Un bloque catch sirve para capturar cualquier excepción que se corresponda con el tipo
declarado o cualquiera de sus subclases.
 Aunque haya varios posibles catch que pueden capturar una excepción, solo uno de ellos será
ejecutado cuando esta se produzca.
 Tras la ejecución de un catch, el control del programa nunca se devuelve al lugar donde se ha
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 estar situados por delante de los más genéricos.
Captura de excepciones
finally
Su uso es opcional. El bloque finally se ejecutará tanto si se produce una excepción
como si no, garantizando así que un determinado conjunto de instrucciones
siempre sean ejecutada.
Si se produce una excepción en try, el bloque finally se ejecutará después del catch
para tratamiento de la excepción. En caso de que no hubiera ningún catch para el
tratamiento de la excepción producida, el bloque finally se ejecutaría antes de
propagar la excepción.
Si no se produce excepción alguna en el interior del try, el bloque finally se
ejecutará tras la última instrucción del try.
Se usa básicamente para tareas de limpieza, como cerrar archivos , conexiones a
bases de datos y liberar recursos.
public class Principal {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
imprime(br);
} catch ( IOException e ) {
System.out.println("Fallo de lectura..!");
}
}
static void imprime(BufferedReader bf) throws IOException {
String n = bf.readLine(); //Puede provocar una excepción
System.out.println(n);
}
}
Propagación de una excepción
En el caso de que no se tenga previsto ninguna acción particular para el tratamiento de
una determinada excepción, 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 (throws).
Declara la excepción para
que sea propagada
Es capturada aquí, al invocar el método imprime
Propagación de una excepción
La excepción no es
tratada y se lanza al
método que llamo al
método actual
1 2
La excepción no es tratada por el
método main() y el programa aborta
su ejecución
3
La sentencia lanza una excepción
Excepción no es
tratada y se lanza a la
convocatoria del
método
Métodos para el control de una excepción
Los métodos más importantes son:
String getMessage(). Devuelve un mensaje de texto asociado a la excepción,
dependiendo del tipo de objeto de excepción sobre el que se aplique.
void printStackTrace(). Envía a la consola el volcado de la pila asociado a la
excepción. Su uso puede ser muy útil durante la fase de desarrollo de la
aplicación.
void printStackTrace(PrintStream s). Esta versión permite enviar el volcado
de pila a un objeto PrintStream cualquiera, por ejemplo, un archivo log.
Bibliografías
Martín, Antonio. Programador Certificado Java 2. Curso Práctico. Editorial
RA-MA. 2da Edición.
Joyanes L., Zahonero I. Programación en Java 6. Algoritmos, programación
orientada a objetos e interfaz gráfica de usuarios. McGRAW-HILL, 1ra Edición.

Mais conteúdo relacionado

Mais procurados

Debug PaulinaChacon
Debug PaulinaChaconDebug PaulinaChacon
Debug PaulinaChacon
Pau22
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
Marvin Zumbado
 

Mais procurados (20)

Debug PaulinaChacon
Debug PaulinaChaconDebug PaulinaChacon
Debug PaulinaChacon
 
Ordenamientos externos
Ordenamientos externosOrdenamientos externos
Ordenamientos externos
 
Clases en java
Clases en javaClases en java
Clases en java
 
Tema3 d
Tema3 dTema3 d
Tema3 d
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Programación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 ExcepcionesProgramación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 Excepciones
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Tolerancia..
Tolerancia..Tolerancia..
Tolerancia..
 
Tipos de JOIN en SQL.pptx
Tipos de JOIN en SQL.pptxTipos de JOIN en SQL.pptx
Tipos de JOIN en SQL.pptx
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafos
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De Uso
 
Poo 3-herencia-10-11
Poo 3-herencia-10-11Poo 3-herencia-10-11
Poo 3-herencia-10-11
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a Objetos
 
TALLER FLEX Y BISON
TALLER FLEX Y BISONTALLER FLEX Y BISON
TALLER FLEX Y BISON
 
Diagrama de clases UML
Diagrama de clases UMLDiagrama de clases UML
Diagrama de clases UML
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 

Destaque

Excepciones
ExcepcionesExcepciones
Excepciones
rilara
 

Destaque (20)

Diseño adaptativo y responsive
Diseño adaptativo y responsiveDiseño adaptativo y responsive
Diseño adaptativo y responsive
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Fundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIFundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema II
 
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
 
Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015
 
JQuery-Tema 1
JQuery-Tema 1JQuery-Tema 1
JQuery-Tema 1
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
Css - Tema 2
Css -  Tema 2Css -  Tema 2
Css - Tema 2
 
Html - Tema 1
Html - Tema 1Html - Tema 1
Html - Tema 1
 
Html Tema 4 - Formularios
Html Tema 4 - FormulariosHtml Tema 4 - Formularios
Html Tema 4 - Formularios
 
Taller MVC
Taller MVCTaller MVC
Taller MVC
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)
 
Gestion de errores en java
Gestion de errores en javaGestion de errores en java
Gestion de errores en java
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Curso Java Inicial 7 Excepciones
Curso Java Inicial   7 ExcepcionesCurso Java Inicial   7 Excepciones
Curso Java Inicial 7 Excepciones
 
Unidad 5: Excepciones Ejercicio 1
Unidad 5: Excepciones Ejercicio 1Unidad 5: Excepciones Ejercicio 1
Unidad 5: Excepciones Ejercicio 1
 
Java exceptions
Java exceptionsJava exceptions
Java exceptions
 

Semelhante a 05 java excepciones

Excepciones
ExcepcionesExcepciones
Excepciones
kattybe
 
Java excepciones
Java excepcionesJava excepciones
Java excepciones
ricardo_79
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
jent46
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
innovalabcun
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
Robert Wolf
 

Semelhante a 05 java excepciones (20)

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
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Capitulo II
Capitulo IICapitulo II
Capitulo II
 
Java5
Java5Java5
Java5
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Jyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc java-cap12 excepciones
Jyoc java-cap12 excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Resumen
ResumenResumen
Resumen
 
Java excepciones
Java excepcionesJava excepciones
Java excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
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
 
Manejo Estructurado De Excepciones
Manejo Estructurado De ExcepcionesManejo Estructurado De Excepciones
Manejo Estructurado De Excepciones
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Java oo tema09_excepciones
Java oo tema09_excepcionesJava oo tema09_excepciones
Java oo tema09_excepciones
 
5.manejo de excepciones
5.manejo de excepciones5.manejo de excepciones
5.manejo de excepciones
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
 
Resumen claudia u5
Resumen claudia u5Resumen claudia u5
Resumen claudia u5
 

Mais de Renny Batista (6)

Css - Tema 1
Css - Tema 1Css - Tema 1
Css - Tema 1
 
Html - Tema 3
Html - Tema 3Html - Tema 3
Html - Tema 3
 
Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del software
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de Datos
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java script
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetos
 

Último

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
MiNeyi1
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
JonathanCovena1
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Francisco158360
 

Último (20)

LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.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...
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 

05 java excepciones

  • 1. Prof. Renny Batista Programación IIIOctubre, 2015 Excepciones La filosofía básica de Java es que "el código mal formado no se ejecutará".
  • 2. Excepción ¿Qué es una excepción? La palabra excepción indica una irregularidad en el software que se inicia en alguna sentencia del código al encontrar una condición anormal; no se debe confundir con una excepción hardware. 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.
  • 3. Error ¿Qué es un error? 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. Cada tipo de excepción está representada por una subclase de Exception, mientras que los errores son subclases de Error. Ambas clases (Exception y Error), son subclases de Throwable. Object ErrorException Throwable Excepciones Errores
  • 4. Excepciones y condiciones anormales Como se mencionó, las excepciones son eventos anormales que ocurren durante la ejecución del programa, a continuación tenemos algunos ejemplos que lanzan excepciones: Cuando un número es dividido entre cero. Cuando se accede a un elemento de un arreglo que este fuera del límite del arreglo. Cuando existe una condición de desborde (overflow) durante la asignación de valores a variables numéricas. Cuando un recurso es requerido por la aplicación y no está disponible. Cuando se requiere de un archivo para lectura, y el mismo no se encuentra disponible en el sistema de archivos. Cuando la aplicación accede a recursos del sistema sin autorización.
  • 5. Secuencias de acciones cuando se produce una excepción El manejador de excepciones recibe la excepción Analiza la naturaleza de la excepción Crea un “objeto exception” apropiado a través del manejador Prepara el “objeto exception” para ser manejado por el sistema en tiempo de ejecución Sistema de tiempo de ejecución Localiza en la pila de llamadas la entrada del método en el cual ocurrió al condición de error ¿La excepción lanzada es de igual al tipo a la manejada? Error Localiza el manejador de excepciones apropiado para esta excepción Preparar para capturar la excepción Se desciende en la pila de llamadas para localizar el próximo manejador ¿Hay más manejadore s en la pila? Detiene el sistema en tiempo de ejecución Igual Diferente Si No
  • 6. Clases de Excepción Al producirse una excepción en un programa, se crea un objeto de la subclase de Exception a la que pertenece la excepción. Java.lang-Exceptions http://gallerily.com/java+exceptions+tree?image=867525489
  • 7. Tipos de Excepciones Desde el punto de vista del tratamiento de una excepción dentro de un programa, todas las clases de excepción se dividen en dos grandes grupos: Excepciones marcadas Excepciones no marcadas
  • 8. Excepciones Marcadas Son aquellas cuya captura es obligatoria. Normalmente, este tipo de excepciones se producen al invocar a ciertos métodos de determinadas clases y son lanzadas desde el interior de dichos métodos como consecuencia de algún fallo durante la ejecución de los mismos. Todas las clases de excepciones, salvo RuntimeException y sus subclases, pertenecen a este tipo.
  • 9. Declaración de excepciones marcadas 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, seguida de la lista de excepciones que el método puede provocar. public class Nombre_Clase { public String readLine() throws IOException { //Código del método } public void Service() throws ServletException, IOException { //Código del método } } Excepciones que puede “lanzar” el método
  • 10. Excepciones no marcadas Pertenecen a este grupo todas las excepciones de tiempo de ejecución, es decir, RuntimeException y todas sus clases. No es obligatorio capturar dentro de un programa Java una excepción no marcada, el motivo es que gran parte de ellas, se producen como consecuencias de una mala programación, por lo que la solución está en evitar que se produzcan.
  • 11. Excepciones no marcadas Instrucción que genera una excepción (División por cero) Volcado de pila (programa abortado) Datos de la excepción lanzada
  • 12. Captura de excepciones Los bloques try…catch…finally Las instrucciones try, catch y finally proporcionan una forma elegante y estructurada de capturar excepciones dentro de un programa Java, evitando la utilización de instrucciones de control que dificultarían la lectura del código y lo harían más propenso a errores. try { //Instrucciones donde se puede producir excepciones } catch (Tipo_de_excepcion Argumento) { //Tratamiento excepcion 1 } catch (Tipo_de_excepcion Argumento) { //Tratamiento excepcion 2 } finally { //Instrucciones de ultima ejecución } Lista de sentencias que procesan la excepción Tipo de excepción a procesar Nombre del objeto excepción transferido al manejador
  • 13. Captura de excepciones El bloque try delimita aquella o aquellas instrucciones dónde 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. Un bloque catch define las instrucciones que deberán ejecutarse en caso de que se produzca un determinado tipo de excepción. Sobre la utilización de los bloques catch se debe tener en cuenta lo siguiente:  Se pueden definir tantos bloques catch como se considere necesario. Cada bloque catch servirá para tratar un determinado tipo de excepción, no pudiendo haber dos o más catch que tengan declarada la misma clase de excepción.  Un bloque catch sirve para capturar cualquier excepción que se corresponda con el tipo declarado o cualquiera de sus subclases.  Aunque haya varios posibles catch que pueden capturar una excepción, solo uno de ellos será ejecutado cuando esta se produzca.  Tras la ejecución de un catch, el control del programa nunca se devuelve al lugar donde se ha 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 estar situados por delante de los más genéricos.
  • 14. Captura de excepciones finally Su uso es opcional. El bloque finally se ejecutará tanto si se produce una excepción como si no, garantizando así que un determinado conjunto de instrucciones siempre sean ejecutada. Si se produce una excepción en try, el bloque finally se ejecutará después del catch para tratamiento de la excepción. En caso de que no hubiera ningún catch para el tratamiento de la excepción producida, el bloque finally se ejecutaría antes de propagar la excepción. Si no se produce excepción alguna en el interior del try, el bloque finally se ejecutará tras la última instrucción del try. Se usa básicamente para tareas de limpieza, como cerrar archivos , conexiones a bases de datos y liberar recursos.
  • 15. public class Principal { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { imprime(br); } catch ( IOException e ) { System.out.println("Fallo de lectura..!"); } } static void imprime(BufferedReader bf) throws IOException { String n = bf.readLine(); //Puede provocar una excepción System.out.println(n); } } Propagación de una excepción En el caso de que no se tenga previsto ninguna acción particular para el tratamiento de una determinada excepción, 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 (throws). Declara la excepción para que sea propagada Es capturada aquí, al invocar el método imprime
  • 16. Propagación de una excepción La excepción no es tratada y se lanza al método que llamo al método actual 1 2 La excepción no es tratada por el método main() y el programa aborta su ejecución 3 La sentencia lanza una excepción Excepción no es tratada y se lanza a la convocatoria del método
  • 17. Métodos para el control de una excepción Los métodos más importantes son: String getMessage(). Devuelve un mensaje de texto asociado a la excepción, dependiendo del tipo de objeto de excepción sobre el que se aplique. void printStackTrace(). Envía a la consola el volcado de la pila asociado a la excepción. Su uso puede ser muy útil durante la fase de desarrollo de la aplicación. void printStackTrace(PrintStream s). Esta versión permite enviar el volcado de pila a un objeto PrintStream cualquiera, por ejemplo, un archivo log.
  • 18. Bibliografías Martín, Antonio. Programador Certificado Java 2. Curso Práctico. Editorial RA-MA. 2da Edición. Joyanes L., Zahonero I. Programación en Java 6. Algoritmos, programación orientada a objetos e interfaz gráfica de usuarios. McGRAW-HILL, 1ra Edición.