SlideShare una empresa de Scribd logo
Universidad Nacional de Ingeniería
UNI-Región Central Juigalpa
Sabatino
Programación I.
Ingeniería de Sistemas.
Excepciones en Java.
Ing.Juan AragónCruz
INTRODUCCIÓN: GESTIÓN EXCEPCIONES EN JAVA
A continuación vamos a ver como el lenguaje Java implementa su propio sistema
de gestión de excepciones, o como hemos mencionado anteriormente, también
llamado sistema de tratamiento de errores. También veremos los primeros
ejemplos sencillos sobre la gestión de excepciones.
EL SISTEMA DE GESTIÓN DE EXCEPCIONES
El control de flujo de un programa Java sabemos hasta ahora que se lleva a cabo
con sentencias del tipo if, while, for, return, break, etc… Estas sentencias forman
un conjunto de palabras reservardas que determinan cierta funcionalidad. Pues
bien, ninguna de ellas tiene en cuenta que se puedan producir errores en tiempo
de ejecución de un programa y por tanto Java necesita de un conjunto de palabras
nuevas para tener en cuenta que cualquier código puede fallar o ser mal
interpretado en tiempo de ejecución.
Vamos a ver tres de las palabras reservadas para tratamiento de excepciones:
- Try.
- Catch.
- Finally.
Aunque posteriormente veremos otras palabras más avanzadas y otras formas de
tratamiento de errores, éstas son las primeras y más básicas con las que vamos a
trabajar.
De forma introductoria diremos que hay dos formas de tratar errores en Java:
capturarlos o lanzarlos. El uso de try – catch – finally corresponde a la captura de
errores. Vamos a poner un símil sencillo: un error es algo inesperado, como
encontrarte un ladrón dentro de tu casa. Cuando nos encontramos con un error
podemos capturarlo (equivaldría a capturar el ladrón) o lanzarlo (equivaldría a
tratar de hacer huir al ladrón, de hacer que salga fuera del lugar donde se
encuentra).
BLOQUE TRY
Universidad Nacional de Ingeniería
UNI-Región Central Juigalpa
Sabatino
Programación I.
Ingeniería de Sistemas.
Excepciones en Java.
Ing.Juan AragónCruz
Try en inglés es el verbo intentar, así que todo el código que vaya dentro de esta
sentencia será el código sobre el que se intentará capturar el error si se produce y
una vez capturado hacer algo con él. Lo ideal es que no ocurra un error, pero en
caso de que ocurra un bloque try nos permite estar preparados para capturarlo y
tratarlo. Así un ejemplo sería:
try {
System.out.println(“bloque de códigodonde pudierasaltarunerror eseste”);
}
BLOQUE CATCH
En este bloque definimos el conjunto de instrucciones necesarias o de tratamiento
del problema capturado con el bloque try anterior. Es decir, cuando se produce un
error o excepción en el código que se encuentra dentro de un bloque try, pasamos
directamente a ejecutar el conjunto de sentencias que tengamos en el bloque
catch. Esto no es exactamente así pero ya explicaremos más adelante todo el
funcionamiento. De momento para una mejor comprensión vamos a considerar
que esto es así.
catch (Exceptione) {
System.out.println(“bloque de códigodonde se tratael problema”);
}
Fíjate que después de catch hemos puesto unos paréntesis donde pone
“Exception e”. Esto significa que cuando se produce un error Java genera un
objeto de tipo Exception con la información sobre el error y este objeto se envía al
bloque catch.
BLOQUE FINALLY
Y para finalizar tenemos el bloque finally que es un bloque donde podremos definir
un conjunto de instrucciones necesarias tanto si se produce error o excepción
como si no y que por tanto se ejecuta siempre.
finally{
Universidad Nacional de Ingeniería
UNI-Región Central Juigalpa
Sabatino
Programación I.
Ingeniería de Sistemas.
Excepciones en Java.
Ing.Juan AragónCruz
System.out.println(“bloque de códigoejecutadosiempre”);
}
EJEMPLO SIN ERROR
A continuación vamos a ver cómo se comporta un programa con tratamiento de
errores pero donde no se produce ningún error. Escribe este código en tu editor.
/* EjemploGestiónde ExcepcionesJavaaprenderaprogramar.com*/
publicclassPrograma{
publicstaticvoidmain(String[] args) {
try{
System.out.println("Intentamosejecutarel bloque de instrucciones:");
System.out.println("Instrucción1."); System.out.println("Instrucción2.");
System.out.println("Instrucción3,etc.");
}
catch (Exceptione) { System.out.println("Instruccionesaejecutarcuandose produce un
error"); }
finally{ System.out.println("Instruccionesaejecutarfinalmente tantosi se producenerrores
como si no.");}
}
}
La salida obtenida tras ejecutar el programa anterior es:
Gestion excepciones java
Como podemos observar, se han ejecutado todas las instrucciones del bloque try
y finalmente se ejecutó la instrucción del bloque finally. No se ejecuta el bloque
catch porque no hubo error.
EJEMPLO CON ERROR
Universidad Nacional de Ingeniería
UNI-Región Central Juigalpa
Sabatino
Programación I.
Ingeniería de Sistemas.
Excepciones en Java.
Ing.Juan AragónCruz
A continuación vamos a ver cómo se comporta un programa con tratamiento de
errores cuando se produce un error y cómo afecta al control de flujo del programa.
Escribe este código en tu editor.
/* EjemploGestiónde ExcepcionesJavaaprenderaprogramar.com*/
publicclassPrograma{
publicstaticvoidmain(String[] args) {
try {
System.out.println("Intentamosejecutarel bloque de instrucciones:");
System.out.println("Instrucción1.");
intn = Integer.parseInt("M");//errorforzadoentiempode ejecución.
System.out.println("Instrucción2.");
System.out.println("Instrucción3,etc.");
}
catch (Exceptione) {
System.out.println("Instruccionesaejecutarcuandose produce unerror");
}
finally{
System.out.println("Instruccionesaejecutarfinalmentetantosi se producenerrorescomo
si no.");
}
}
}
Se produce un error porque el método parseInt de la clase Integer espera que
dentro de las comillas llegue un número y no una letra. Por ejemplo int n =
Integer.parseInt("65"); sirve para transformar el String 65 en un int de valor 65. Al
no encontrar un valor válido se produce un error de tipo
java.lang.NumberFormatException.
La salida obtenida en este caso donde se produce error es:
Gestion excepciones java 2
Prueba a escribir dentro del bloque catch lo siguiente: System.out.println("Se ha
producido un error " + e );
Trata de interpretar lo que se visualiza en pantalla. Si tienes dudas consulta en los
foros de aprenderaprogramar.com.
Universidad Nacional de Ingeniería
UNI-Región Central Juigalpa
Sabatino
Programación I.
Ingeniería de Sistemas.
Excepciones en Java.
Ing.Juan AragónCruz
Como podemos observar, ejecutamos las instrucciones del bloque try que no dan
errores, pero cuando en una instrucción se produce un error o excepción
inesperada se deja de ejecutar el código del bloque try, y pasamos a ejecutar el
código del bloque catch. Hay un salto o cambio en el flujo del programa.
Finalmente se ejecutan, en todo caso, las instrucciones del bloque finally como
hemos comentado anteriormente. El bloque finally no es obligatorio, es decir,
puede existir un bloque try catch y no existir bloque finally.
CONCLUSIONES
Los errores en Java se pueden capturar o lanzar. La captura se realiza con
bloques try catch, donde por un lado tenemos el código para el caso de flujo sin
problemas del programa y por otro el código con instrucciones para el tratamiento
de errores.
Nota: Buscar ejemplosde NullPointerExceptionyEOFException
Universidad Nacional de Ingeniería
UNI-Región Central Juigalpa
Sabatino
Programación I.
Ingeniería de Sistemas.
Excepciones en Java.
Ing.Juan AragónCruz

Más contenido relacionado

PDF
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
RTF
Try catch
PDF
Guia demanejodeexcepcionesaserciones
PPT
5.manejo de excepciones
PPT
Gestión de errores en Java
PPT
Manejo De Excepciones
PDF
excepciones en java
PDF
Java excepciones
Cu00927 c gestion excepciones java try catch finally ejemplos ejercicios
Try catch
Guia demanejodeexcepcionesaserciones
5.manejo de excepciones
Gestión de errores en Java
Manejo De Excepciones
excepciones en java
Java excepciones

La actualidad más candente (19)

PDF
Manejo de excepciones en Java
PPTX
PDF
05 java excepciones
PPTX
Gestión de Excepciones
PPT
Excepciones en java
DOCX
Mas sobre excepciones
PDF
Lab excepciones
PPT
Programación III (Java) - 04 Excepciones
DOCX
Las excepciones standar
PPT
excepciones_java en www.fiec.espol.edu.ec
PDF
Jyoc java-cap12 excepciones
PDF
PDF
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
DOCX
Actividad de proceso n7
PDF
Lab excepciones propias
PPT
Semana 8 excepciones definidas por el usuario
PPT
Java exceptions
PDF
unidad 5 excepciones propias
Manejo de excepciones en Java
05 java excepciones
Gestión de Excepciones
Excepciones en java
Mas sobre excepciones
Lab excepciones
Programación III (Java) - 04 Excepciones
Las excepciones standar
excepciones_java en www.fiec.espol.edu.ec
Jyoc java-cap12 excepciones
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y ...
Actividad de proceso n7
Lab excepciones propias
Semana 8 excepciones definidas por el usuario
Java exceptions
unidad 5 excepciones propias
Publicidad

Destacado (20)

DOCX
Proyecto final de jabón líquido de eucalipto
PDF
Curso De IniciacióN Al Lenguaje C
PDF
Educacion y violencia escolar
PDF
camara de frio para camaron
PPT
Cuerpos geometricos 2
DOCX
SENA-LIDERAZGO Y GESTIÓN ACADÉMICA UNIDAD 1
PPTX
marketing securitas business plan
PDF
Guia participante evaluación interna
PPT
Servicio al cliente
PDF
Plan de MARKETING SECURITAS
PDF
Respuestas consultas Evaluación 2011.
PPT
Planificación estrategica - Matriz FODA
PPT
Ventajas Y Desventajas Del Tlc
PDF
Las cinco-tentaciones-del-gerente
PPT
Teaching spelling
PDF
PETER SLOTERDIJK: EL ANIMAL ACROBÁTICO, PRÁCTICAS ANTROPOTÉCNICAS Y DISEÑO D...
PPTX
The HELP Movie - Individual & Group Change Analysis
PPT
T3 B Epidemilogia Diabetes
PDF
Historia de la_estadistica_y_la_probabil
PPTX
Views Toward Nutrition and Healthful Eating Among Millennials
Proyecto final de jabón líquido de eucalipto
Curso De IniciacióN Al Lenguaje C
Educacion y violencia escolar
camara de frio para camaron
Cuerpos geometricos 2
SENA-LIDERAZGO Y GESTIÓN ACADÉMICA UNIDAD 1
marketing securitas business plan
Guia participante evaluación interna
Servicio al cliente
Plan de MARKETING SECURITAS
Respuestas consultas Evaluación 2011.
Planificación estrategica - Matriz FODA
Ventajas Y Desventajas Del Tlc
Las cinco-tentaciones-del-gerente
Teaching spelling
PETER SLOTERDIJK: EL ANIMAL ACROBÁTICO, PRÁCTICAS ANTROPOTÉCNICAS Y DISEÑO D...
The HELP Movie - Individual & Group Change Analysis
T3 B Epidemilogia Diabetes
Historia de la_estadistica_y_la_probabil
Views Toward Nutrition and Healthful Eating Among Millennials
Publicidad

Similar a Excepciones en Java (20)

PPTX
Try catch finally
PDF
Java5
PPTX
Manejo de Excepciones
PDF
Manejo de excepciones en vb
PPTX
Programación Orientada a Objetos - Unidad 5 Excepciones
PPTX
Manejo de excepciones en el lenguaje java.pptx
PPT
Capitulo II
PPTX
PPT
Excepciones
PDF
Java oo tema09_excepciones
PPT
Excepciones
PPT
Excepciones
PPT
Gestion de errores en java
PDF
Clase5 controldeflujo
PPTX
Introducción a java
PDF
[ES] Manejo de datos y excepciones
PPT
Scjp Jug Section 2 Flow Control
PDF
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
PDF
3...3 manejo de excepciones y la clase string
PDF
3...3 manejo de excepciones y la clase string
Try catch finally
Java5
Manejo de Excepciones
Manejo de excepciones en vb
Programación Orientada a Objetos - Unidad 5 Excepciones
Manejo de excepciones en el lenguaje java.pptx
Capitulo II
Excepciones
Java oo tema09_excepciones
Excepciones
Excepciones
Gestion de errores en java
Clase5 controldeflujo
Introducción a java
[ES] Manejo de datos y excepciones
Scjp Jug Section 2 Flow Control
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string

Más de Juan Aragón Cruz (6)

PDF
Ejercicios de matemática financiera
PDF
Tabla TIR Interpolación Lineal
DOC
Trabajo uni ies análisis numérico 3 t1-s,3t2-s,3t1-i,3t2-i
DOCX
Ejercicios matemática financiera 2 m1 s, 2m2-s
DOCX
Tabla Cálculo de días entre dos fechas.
DOC
Juan aragón currículum
Ejercicios de matemática financiera
Tabla TIR Interpolación Lineal
Trabajo uni ies análisis numérico 3 t1-s,3t2-s,3t1-i,3t2-i
Ejercicios matemática financiera 2 m1 s, 2m2-s
Tabla Cálculo de días entre dos fechas.
Juan aragón currículum

Último (20)

PPTX
CLASE 6.pptxEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
PPTX
Clase-6-sensacion-y-percepcion-.pptx jajsja
PPTX
Gobierno corporativo talento humano gth.
PPTX
2023-Injuria-02A-Virus hemorragicos.pptx
PDF
ANATOMÍA DEL PIE.pdfBIOSEGURIDAD.pdfBIOSEGURIDAD.pdf
PPTX
HABILIDADES BLANDAS Y TÉCNICAS DE VENTA .pptx
PPTX
LEY ASEP 070 avelino siáni y elizardo perez
PPTX
GRAN RONDA DE PREGUNTAS QUE VANA AHCER PARA OBTENER UN BENEFICIO ACADEMICO
DOCX
Explicación Legal sobre el Tiempo de Colación en la Jornada Laboral Docente.docx
PPTX
Hpetatitis A y E hjfyfhgffxffgff(2).pptx
PPTX
2 .EXPOSICIÓN_GRUPO_2. GESTIÓN_PÚBLICA..pptx
PPTX
TRABAJP DE ECONOMIA . factores de producción
PPTX
Adaptacion, Lesion y Muerte Celular.pptx
PPTX
ATAQUES-VIRUS.pptx en sst y seguridad laboral
PPT
435138284-El-aborto-presentacion_031412.ppt
PDF
8. Consultar y solicitar ofertas de empleo.pdf
PPTX
No lo sé, solo lo subo para descargar un documento :p.pptx
PPTX
CZGNB-52 ANZOATEGUI HAMPOGRAMA (1).pptx1
PDF
CAJA HERRAMIENTAS DEMANDANTE EMPLEO V141 ILLES BALEARS.pdf
DOCX
¿Te han rechazado en una entrevista? Transforma el 'no' en tu próximo impulso"
CLASE 6.pptxEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
Clase-6-sensacion-y-percepcion-.pptx jajsja
Gobierno corporativo talento humano gth.
2023-Injuria-02A-Virus hemorragicos.pptx
ANATOMÍA DEL PIE.pdfBIOSEGURIDAD.pdfBIOSEGURIDAD.pdf
HABILIDADES BLANDAS Y TÉCNICAS DE VENTA .pptx
LEY ASEP 070 avelino siáni y elizardo perez
GRAN RONDA DE PREGUNTAS QUE VANA AHCER PARA OBTENER UN BENEFICIO ACADEMICO
Explicación Legal sobre el Tiempo de Colación en la Jornada Laboral Docente.docx
Hpetatitis A y E hjfyfhgffxffgff(2).pptx
2 .EXPOSICIÓN_GRUPO_2. GESTIÓN_PÚBLICA..pptx
TRABAJP DE ECONOMIA . factores de producción
Adaptacion, Lesion y Muerte Celular.pptx
ATAQUES-VIRUS.pptx en sst y seguridad laboral
435138284-El-aborto-presentacion_031412.ppt
8. Consultar y solicitar ofertas de empleo.pdf
No lo sé, solo lo subo para descargar un documento :p.pptx
CZGNB-52 ANZOATEGUI HAMPOGRAMA (1).pptx1
CAJA HERRAMIENTAS DEMANDANTE EMPLEO V141 ILLES BALEARS.pdf
¿Te han rechazado en una entrevista? Transforma el 'no' en tu próximo impulso"

Excepciones en Java

  • 1. Universidad Nacional de Ingeniería UNI-Región Central Juigalpa Sabatino Programación I. Ingeniería de Sistemas. Excepciones en Java. Ing.Juan AragónCruz INTRODUCCIÓN: GESTIÓN EXCEPCIONES EN JAVA A continuación vamos a ver como el lenguaje Java implementa su propio sistema de gestión de excepciones, o como hemos mencionado anteriormente, también llamado sistema de tratamiento de errores. También veremos los primeros ejemplos sencillos sobre la gestión de excepciones. EL SISTEMA DE GESTIÓN DE EXCEPCIONES El control de flujo de un programa Java sabemos hasta ahora que se lleva a cabo con sentencias del tipo if, while, for, return, break, etc… Estas sentencias forman un conjunto de palabras reservardas que determinan cierta funcionalidad. Pues bien, ninguna de ellas tiene en cuenta que se puedan producir errores en tiempo de ejecución de un programa y por tanto Java necesita de un conjunto de palabras nuevas para tener en cuenta que cualquier código puede fallar o ser mal interpretado en tiempo de ejecución. Vamos a ver tres de las palabras reservadas para tratamiento de excepciones: - Try. - Catch. - Finally. Aunque posteriormente veremos otras palabras más avanzadas y otras formas de tratamiento de errores, éstas son las primeras y más básicas con las que vamos a trabajar. De forma introductoria diremos que hay dos formas de tratar errores en Java: capturarlos o lanzarlos. El uso de try – catch – finally corresponde a la captura de errores. Vamos a poner un símil sencillo: un error es algo inesperado, como encontrarte un ladrón dentro de tu casa. Cuando nos encontramos con un error podemos capturarlo (equivaldría a capturar el ladrón) o lanzarlo (equivaldría a tratar de hacer huir al ladrón, de hacer que salga fuera del lugar donde se encuentra). BLOQUE TRY
  • 2. Universidad Nacional de Ingeniería UNI-Región Central Juigalpa Sabatino Programación I. Ingeniería de Sistemas. Excepciones en Java. Ing.Juan AragónCruz Try en inglés es el verbo intentar, así que todo el código que vaya dentro de esta sentencia será el código sobre el que se intentará capturar el error si se produce y una vez capturado hacer algo con él. Lo ideal es que no ocurra un error, pero en caso de que ocurra un bloque try nos permite estar preparados para capturarlo y tratarlo. Así un ejemplo sería: try { System.out.println(“bloque de códigodonde pudierasaltarunerror eseste”); } BLOQUE CATCH En este bloque definimos el conjunto de instrucciones necesarias o de tratamiento del problema capturado con el bloque try anterior. Es decir, cuando se produce un error o excepción en el código que se encuentra dentro de un bloque try, pasamos directamente a ejecutar el conjunto de sentencias que tengamos en el bloque catch. Esto no es exactamente así pero ya explicaremos más adelante todo el funcionamiento. De momento para una mejor comprensión vamos a considerar que esto es así. catch (Exceptione) { System.out.println(“bloque de códigodonde se tratael problema”); } Fíjate que después de catch hemos puesto unos paréntesis donde pone “Exception e”. Esto significa que cuando se produce un error Java genera un objeto de tipo Exception con la información sobre el error y este objeto se envía al bloque catch. BLOQUE FINALLY Y para finalizar tenemos el bloque finally que es un bloque donde podremos definir un conjunto de instrucciones necesarias tanto si se produce error o excepción como si no y que por tanto se ejecuta siempre. finally{
  • 3. Universidad Nacional de Ingeniería UNI-Región Central Juigalpa Sabatino Programación I. Ingeniería de Sistemas. Excepciones en Java. Ing.Juan AragónCruz System.out.println(“bloque de códigoejecutadosiempre”); } EJEMPLO SIN ERROR A continuación vamos a ver cómo se comporta un programa con tratamiento de errores pero donde no se produce ningún error. Escribe este código en tu editor. /* EjemploGestiónde ExcepcionesJavaaprenderaprogramar.com*/ publicclassPrograma{ publicstaticvoidmain(String[] args) { try{ System.out.println("Intentamosejecutarel bloque de instrucciones:"); System.out.println("Instrucción1."); System.out.println("Instrucción2."); System.out.println("Instrucción3,etc."); } catch (Exceptione) { System.out.println("Instruccionesaejecutarcuandose produce un error"); } finally{ System.out.println("Instruccionesaejecutarfinalmente tantosi se producenerrores como si no.");} } } La salida obtenida tras ejecutar el programa anterior es: Gestion excepciones java Como podemos observar, se han ejecutado todas las instrucciones del bloque try y finalmente se ejecutó la instrucción del bloque finally. No se ejecuta el bloque catch porque no hubo error. EJEMPLO CON ERROR
  • 4. Universidad Nacional de Ingeniería UNI-Región Central Juigalpa Sabatino Programación I. Ingeniería de Sistemas. Excepciones en Java. Ing.Juan AragónCruz A continuación vamos a ver cómo se comporta un programa con tratamiento de errores cuando se produce un error y cómo afecta al control de flujo del programa. Escribe este código en tu editor. /* EjemploGestiónde ExcepcionesJavaaprenderaprogramar.com*/ publicclassPrograma{ publicstaticvoidmain(String[] args) { try { System.out.println("Intentamosejecutarel bloque de instrucciones:"); System.out.println("Instrucción1."); intn = Integer.parseInt("M");//errorforzadoentiempode ejecución. System.out.println("Instrucción2."); System.out.println("Instrucción3,etc."); } catch (Exceptione) { System.out.println("Instruccionesaejecutarcuandose produce unerror"); } finally{ System.out.println("Instruccionesaejecutarfinalmentetantosi se producenerrorescomo si no."); } } } Se produce un error porque el método parseInt de la clase Integer espera que dentro de las comillas llegue un número y no una letra. Por ejemplo int n = Integer.parseInt("65"); sirve para transformar el String 65 en un int de valor 65. Al no encontrar un valor válido se produce un error de tipo java.lang.NumberFormatException. La salida obtenida en este caso donde se produce error es: Gestion excepciones java 2 Prueba a escribir dentro del bloque catch lo siguiente: System.out.println("Se ha producido un error " + e ); Trata de interpretar lo que se visualiza en pantalla. Si tienes dudas consulta en los foros de aprenderaprogramar.com.
  • 5. Universidad Nacional de Ingeniería UNI-Región Central Juigalpa Sabatino Programación I. Ingeniería de Sistemas. Excepciones en Java. Ing.Juan AragónCruz Como podemos observar, ejecutamos las instrucciones del bloque try que no dan errores, pero cuando en una instrucción se produce un error o excepción inesperada se deja de ejecutar el código del bloque try, y pasamos a ejecutar el código del bloque catch. Hay un salto o cambio en el flujo del programa. Finalmente se ejecutan, en todo caso, las instrucciones del bloque finally como hemos comentado anteriormente. El bloque finally no es obligatorio, es decir, puede existir un bloque try catch y no existir bloque finally. CONCLUSIONES Los errores en Java se pueden capturar o lanzar. La captura se realiza con bloques try catch, donde por un lado tenemos el código para el caso de flujo sin problemas del programa y por otro el código con instrucciones para el tratamiento de errores. Nota: Buscar ejemplosde NullPointerExceptionyEOFException
  • 6. Universidad Nacional de Ingeniería UNI-Región Central Juigalpa Sabatino Programación I. Ingeniería de Sistemas. Excepciones en Java. Ing.Juan AragónCruz