SlideShare une entreprise Scribd logo
1  sur  5
LAS EXCEPCIONES STANDAR
Los programadores de cualquier lenguaje se esfuerzan por escribir programas libres
de errores, sin embargo, es muy difícil que los programas reales se vean libres de
ellos. En Java las situaciones que pueden provocar un fallo en el programa se
denominan excepciones.
Java lanza una excepción en respuesta a una situación poco usual. El programador
también puede lanzar sus propias excepciones. Las excepciones en Java son objetos
de clases derivadas de la clase base Exception. Existen también los errores internos
que son objetos de la clase Error que no estudiaremos. Ambas
clases Error y Exception son clases derivadas de la clase base Throwable.
Existe toda una jerarquía de clases derivada de la clase base Exception. Estas clases
derivadas se ubican en dos grupos principales:
Las excepciones en tiempo de ejecución ocurren cuando el programador no ha tenido
cuidado al escribir su código. Por ejemplo, cuando se sobrepasa la dimensión de un
array se lanza una excepción ArrayIndexOutOfBounds. Cuando se hace uso de una
referencia a un objeto que no ha sido creado se lanza la
excepción NullPointerException. Estas excepciones le indican al programador que
tipos de fallos tiene el programa y que debe arreglarlo antes de proseguir.
El segundo grupo de excepciones, es el más interesante, ya que indican que ha
sucedido algo inesperado o fuera de control.
Las excepciones
En la página dedicada al estudio de la clase String, mencionamos una función que
convierte un string en un número. Esta función es muy usuada cuando creamos
applets. Introducimos el número en un control de edición, se obtiene el texto y se
guarda en un string. Luego, se convierte el string en número entero mediante la
función estática Integer.parseInt, y finalmente, usamos dicho número.
String str=" 12 ";
int numero=Integer.parseInt(str);
Si se introducen caracteres no numéricos, o no se quitan los espacios en blanco al
principio y al final del string, mediante la función trim, se lanza una
excepción NumberFormatException.
AppAccelerator(tm) 1.1.034 for Java (JDK 1.1), x86 version.
Copyright (c) 1998 Borland International. All Rights Reserved.
java.lang.NumberFormatException: 12
at java.lang.Integer.parseInt(Compiled Code)
at java.lang.Integer.parseInt(Integer.java:390)
at excepcion.ExcepcionApp.main(ExcepcionApp.java:8)
Para ver este texto, se selecciona el elemento del menú del IDE Run/Parematers. En el
cuadro de diálogo que aparece activar el botón de radio Set run output to Execution
Log. Luego, se corre la aplicación Run/Run. Se selecciona el elemento del
menú View/Execution Log, para que se muestre en una ventana la salida del
programa. Para restaurar la salida a la consola, la ventana DOS, se selecciona de
nuevo Run/Parematers. En el cuadro de diálogo que aparece, se activa el botón de
radio Set run output to Console window.
El mensaje que aparece en la ventana nos indica el tipo de
excepción NumberFormatException, la función que la ha lanzado Integer.parseInt,
que se llama dentro de main.
Objeto no inicializado
Habitualmente, cuando llamanos desde un objeto no inicializado, a una función
miembro.
public static void main(String[] args) {
String str;
str.length();
//...
}
El compilador se queja con el siguiente mensaje "variable str might not have been
initilized". En otras ocasiones, se lanza una excepción del
tipo NulPointerException. Fijarse que en la porción de código que sigue, grafico es
una variable de instancia que es inicializada por defecto a null.
class MiCanvas....{
Grafico grafico;
public void paint(...){
grafico.dibuja();
//...
}
//...
}
Como vemos en la porción de código, si al llamarse a la función paint, el
objeto grafico no ha sido inicializado con el valor devuelto por new al crear un objeto
de la clase Grafico o de alguna de sus clases derivadas, se lanza la
excepción NullPointerException apareciendo en la consola el siguiente texto.
Exception occurred during event dispatching:
java.lang.NullPointerException
at grafico1.MiCanvas.paint(MiCanvas.java:43)
at sun.awt.windows.WComponentPeer.handleEvent(Compiled Code)
at java.awt.Component.dispatchEventImpl(Compiled Code)
at java.awt.Component.dispatchEvent(Compiled Code)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Entrada/salida
En otras situaciones el mensaje de error aparece en el momento en el que se compila
el programa. Así, cuando intentamos leer un carácter del teclado, llamamos a la la
función
System.in.read();
Cuando compilamos el programa, nos aparece un mensaje de error que no nos deja
proseguir.
unreported exception: java.io.IOException; must be caught or declared to be
thrown
Captura de las excepciones
Empecemos por solucionar el error que se produce en el programa durante la
compilación. Tal como indica el mensaje que genera el compilador, se ha de poner la
sentencia System.in.read(); en un bloque try...catch, del siguiente modo.
try {
System.in.read();
}catch (IOException ex) { }
Para solucionar el error que se produce en el programa durante su ejecución, se debe
poner la llamada a Integer.parseInt en el siguiente bloque try...catch.
String str=" 12 ";
int numero;
try{
numero=Integer.parseInt(str);
}catch(NumberFormatException ex){
System.out.println("No es un número");
}
En el caso de que el string str contenga caracteres no numéricos como es éste el caso,
el número 12 está acompñado de espacios en blanco, se produce una excepción del
tipo NumberFormatException que es capturada y se imprime el mensaje "No es un
número".
En vez de un mensaje propio se puede imprimir el objeto ex de la
clase NumberFormatException
try{
//...
}catch(NumberFormatException ex){
System.out.println(ex);
}
La clase base Throwable de todas las clases que describen las excepciones, redefine la
función toString, que devuelve el nombre de la clase que describe la excepción
acompañado del mensaje asociado, que en este caso es el propio string str.
java.lang.NumberFormatException: 12
Podemos extraer dicho mensaje mediante la función miembro getMessage, del
siguiente modo
try{
//...
}catch(NumberFormatException ex){
System.out.println(ex.getMessage());
}
Manejando varias excepciones
Vamos a crear un programa que divida dos números. Supongamos que los números se
introducen én dos controles de edicion. Se obtiene el texto de cada uno de los
controles de edición que se guardan en dos strings. En esta situación se pueden
producir dos excepciones NumberFormatException, si se introducen caracteres no
numéricos y ArithmeticException sise divide entre cero.
public class ExcepcionApp {
public static void main(String[] args) {
String str1="12";
String str2="0";
String respuesta;
int numerador, denominador, cociente;
try{
numerador=Integer.parseInt(str1);
denominador=Integer.parseInt(str2);
cociente=numerador/denominador;
respuesta=String.valueOf(cociente);
}catch(NumberFormatException ex){
respuesta="Se han introducido caracteres no numéricos";
}catch(ArithmeticException ex){
respuesta="División entre cero";
}
System.out.println(respuesta);
}
}
Como vemos las sentencias susceptibles de lanzar una excepción se sitúan en un
bloque try...catch. Si el denominador es cero, se produce una excepción de la
clase ArithmeticException en la expresión que halla el cociente, que es
inmediatamente capturada en el bloque catch que maneja dicha excepción,
ejecutándose las sentencias que hay en dicho bloque. En este caso se guarda en el
string respuesta el texto "División entre cero".
Hay veces en las que se desea estar seguro de que un bloque de código se ejecute se
produzcan o no excepciones. Se puede hacer esto añadiendo un bloque finallydespués
del último catch. Esto es importante cuando accedemos a archivos, para asegurar que
se cerrará siempre un archivo se produzca o no un error en el proceso de
lectura/escritura.
try{
//Este código puede generar una excepción
}catch(Exception ex){
//Este código se ejecuta cuando se produce una excepción
}finally{
//Este código se ejecuta se produzca o no una excepción
}

Contenu connexe

Tendances

Java exceptions
Java exceptionsJava exceptions
Java exceptions
sandropaul
 
Semana 8 excepciones definidas por el usuario
Semana 8 excepciones definidas por el usuarioSemana 8 excepciones definidas por el usuario
Semana 8 excepciones definidas por el usuario
victdiazm
 
Programación III (Java) - 04 Excepciones
Programación III (Java) - 04 ExcepcionesProgramación III (Java) - 04 Excepciones
Programación III (Java) - 04 Excepciones
Andoni Eguíluz Morán
 
Excepciones
ExcepcionesExcepciones
Excepciones
kattybe
 
Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesaserciones
jbersosa
 
Excepciones
ExcepcionesExcepciones
Excepciones
rilara
 

Tendances (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
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Java exceptions
Java exceptionsJava exceptions
Java exceptions
 
excepciones en java
excepciones en javaexcepciones en java
excepciones en java
 
Exceptions (2)
Exceptions (2)Exceptions (2)
Exceptions (2)
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Semana 8 excepciones definidas por el usuario
Semana 8 excepciones definidas por el usuarioSemana 8 excepciones definidas por el usuario
Semana 8 excepciones definidas por el usuario
 
Programación III (Java) - 04 Excepciones
Programación III (Java) - 04 ExcepcionesProgramación III (Java) - 04 Excepciones
Programación III (Java) - 04 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
ExcepcionesExcepciones
Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
unidad 5 excepciones propias
unidad 5 excepciones propiasunidad 5 excepciones propias
unidad 5 excepciones propias
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Tipos de excepciones
 
Clase string y manejo de excepciones
Clase string y manejo de excepcionesClase string y manejo de excepciones
Clase string y manejo de excepciones
 
Guia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesasercionesGuia demanejodeexcepcionesaserciones
Guia demanejodeexcepcionesaserciones
 
Resumen claudia u5
Resumen claudia u5Resumen claudia u5
Resumen claudia u5
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Errores
ErroresErrores
Errores
 
Lab excepciones propias
Lab excepciones propiasLab excepciones propias
Lab excepciones propias
 

En vedette (8)

Java
JavaJava
Java
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 
SQL-DDL
SQL-DDLSQL-DDL
SQL-DDL
 
Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Ejemplo ddl dml
Ejemplo ddl dmlEjemplo ddl dml
Ejemplo ddl dml
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 

Similaire à Las excepciones standar

Tabbed pane y excepciones
Tabbed pane y excepcionesTabbed pane y excepciones
Tabbed pane y excepciones
aleja0940
 
[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones
Eudris Cabrera
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
Robert Wolf
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
alenco
 
Tema 10 excepciones
Tema 10 excepcionesTema 10 excepciones
Tema 10 excepciones
jbersosa
 

Similaire à Las excepciones standar (20)

Tabbed pane y excepciones
Tabbed pane y excepcionesTabbed pane y excepciones
Tabbed pane y excepciones
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Java5
Java5Java5
Java5
 
Javaintroduccion 2010
Javaintroduccion 2010Javaintroduccion 2010
Javaintroduccion 2010
 
Taller 1 4
Taller 1 4Taller 1 4
Taller 1 4
 
Capitulo II
Capitulo IICapitulo II
Capitulo II
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Try catch
Try catchTry catch
Try catch
 
Lenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosLenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptos
 
[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones
 
Gestion de errores en java
Gestion de errores en javaGestion de errores en java
Gestion de errores 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
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 
2.Introducción a las aplicaciones en java
2.Introducción a las aplicaciones en java2.Introducción a las aplicaciones en java
2.Introducción a las aplicaciones en java
 
Tema 10 excepciones
Tema 10 excepcionesTema 10 excepciones
Tema 10 excepciones
 

Plus de jbersosa

Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
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ón
jbersosa
 
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
 
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
jbersosa
 
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
jbersosa
 

Plus de jbersosa (20)

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
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper report
 

Dernier

Clase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdf
Clase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdfClase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdf
Clase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdf
garrotamara01
 
(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)
(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)
(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)
UDMAFyC SECTOR ZARAGOZA II
 
LIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdf
LIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdfLIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdf
LIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdf
Franc.J. Vasquez.M
 
BOLETIN DIA MUNDIAL DE LA HIPERTENSIÓN.pptx
BOLETIN DIA MUNDIAL DE LA  HIPERTENSIÓN.pptxBOLETIN DIA MUNDIAL DE LA  HIPERTENSIÓN.pptx
BOLETIN DIA MUNDIAL DE LA HIPERTENSIÓN.pptx
MariaBravoB1
 
Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...
Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...
Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...
JulietaLopez96
 

Dernier (20)

Recién Nacido y escalas para determinar la edad gestacional
Recién Nacido y escalas para determinar la edad gestacionalRecién Nacido y escalas para determinar la edad gestacional
Recién Nacido y escalas para determinar la edad gestacional
 
Clase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdf
Clase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdfClase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdf
Clase 17 Artrologia MMII 3 de 3 (Pie) 2024 (1).pdf
 
asincronias ventilatorias-ventilacion mecanica
asincronias ventilatorias-ventilacion mecanicaasincronias ventilatorias-ventilacion mecanica
asincronias ventilatorias-ventilacion mecanica
 
(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)
(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)
(2024-05-06)Sesion Anticoncepción desde atencion primaria (DOC)
 
317543696-CUMARINA-EXPOSICION-ORGANICA4.pptx
317543696-CUMARINA-EXPOSICION-ORGANICA4.pptx317543696-CUMARINA-EXPOSICION-ORGANICA4.pptx
317543696-CUMARINA-EXPOSICION-ORGANICA4.pptx
 
LIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdf
LIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdfLIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdf
LIBRO LA MEJOR PSICOTERAPIA, PROLOGO - copia.pdf
 
Cuadro comparativo de las enfermedades exantematicas 2022.docx
Cuadro comparativo de las enfermedades exantematicas 2022.docxCuadro comparativo de las enfermedades exantematicas 2022.docx
Cuadro comparativo de las enfermedades exantematicas 2022.docx
 
MAPA EnfermedadesCerebrovasculares...pdf
MAPA EnfermedadesCerebrovasculares...pdfMAPA EnfermedadesCerebrovasculares...pdf
MAPA EnfermedadesCerebrovasculares...pdf
 
Benzodiazepinas en anestesiologia generalidades.pptx
Benzodiazepinas en anestesiologia generalidades.pptxBenzodiazepinas en anestesiologia generalidades.pptx
Benzodiazepinas en anestesiologia generalidades.pptx
 
BOLETIN DIA MUNDIAL DE LA HIPERTENSIÓN.pptx
BOLETIN DIA MUNDIAL DE LA  HIPERTENSIÓN.pptxBOLETIN DIA MUNDIAL DE LA  HIPERTENSIÓN.pptx
BOLETIN DIA MUNDIAL DE LA HIPERTENSIÓN.pptx
 
Manejo adecuado del bulto de ropa quirugico
Manejo adecuado del bulto de ropa quirugicoManejo adecuado del bulto de ropa quirugico
Manejo adecuado del bulto de ropa quirugico
 
Uso Racional del medicamento prescripción
Uso Racional del medicamento prescripciónUso Racional del medicamento prescripción
Uso Racional del medicamento prescripción
 
666105651-Farmacologia-Rios-2-Editorial-Sketch-Med-2024.pdf
666105651-Farmacologia-Rios-2-Editorial-Sketch-Med-2024.pdf666105651-Farmacologia-Rios-2-Editorial-Sketch-Med-2024.pdf
666105651-Farmacologia-Rios-2-Editorial-Sketch-Med-2024.pdf
 
ANAMNESIS Y EXAMEN FISICO DEL SISTEMA RENAL.pptx
ANAMNESIS Y EXAMEN FISICO DEL SISTEMA  RENAL.pptxANAMNESIS Y EXAMEN FISICO DEL SISTEMA  RENAL.pptx
ANAMNESIS Y EXAMEN FISICO DEL SISTEMA RENAL.pptx
 
glucólisis anaerobia.pdf
glucólisis                 anaerobia.pdfglucólisis                 anaerobia.pdf
glucólisis anaerobia.pdf
 
Cuadernillo de depresion. ejercicios practicos
Cuadernillo de depresion. ejercicios practicosCuadernillo de depresion. ejercicios practicos
Cuadernillo de depresion. ejercicios practicos
 
Músculos de la pierna y el pie-Anatomía.pptx
Músculos de la pierna y el pie-Anatomía.pptxMúsculos de la pierna y el pie-Anatomía.pptx
Músculos de la pierna y el pie-Anatomía.pptx
 
Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...
Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...
Pediatría en Red 5. temas de pediatria. Pediatria en red, temas de pediatria ...
 
Nutrición para el control de hipercolesterolemia e hiper trigliceridemia- Nut...
Nutrición para el control de hipercolesterolemia e hiper trigliceridemia- Nut...Nutrición para el control de hipercolesterolemia e hiper trigliceridemia- Nut...
Nutrición para el control de hipercolesterolemia e hiper trigliceridemia- Nut...
 
MÚSCULOS DEL CUELLO DESCRIPCIÓN ORIGEN INSERCIÓN E INERVACION
MÚSCULOS DEL CUELLO DESCRIPCIÓN ORIGEN INSERCIÓN E INERVACIONMÚSCULOS DEL CUELLO DESCRIPCIÓN ORIGEN INSERCIÓN E INERVACION
MÚSCULOS DEL CUELLO DESCRIPCIÓN ORIGEN INSERCIÓN E INERVACION
 

Las excepciones standar

  • 1. LAS EXCEPCIONES STANDAR Los programadores de cualquier lenguaje se esfuerzan por escribir programas libres de errores, sin embargo, es muy difícil que los programas reales se vean libres de ellos. En Java las situaciones que pueden provocar un fallo en el programa se denominan excepciones. Java lanza una excepción en respuesta a una situación poco usual. El programador también puede lanzar sus propias excepciones. Las excepciones en Java son objetos de clases derivadas de la clase base Exception. Existen también los errores internos que son objetos de la clase Error que no estudiaremos. Ambas clases Error y Exception son clases derivadas de la clase base Throwable. Existe toda una jerarquía de clases derivada de la clase base Exception. Estas clases derivadas se ubican en dos grupos principales: Las excepciones en tiempo de ejecución ocurren cuando el programador no ha tenido cuidado al escribir su código. Por ejemplo, cuando se sobrepasa la dimensión de un array se lanza una excepción ArrayIndexOutOfBounds. Cuando se hace uso de una referencia a un objeto que no ha sido creado se lanza la excepción NullPointerException. Estas excepciones le indican al programador que tipos de fallos tiene el programa y que debe arreglarlo antes de proseguir. El segundo grupo de excepciones, es el más interesante, ya que indican que ha sucedido algo inesperado o fuera de control. Las excepciones En la página dedicada al estudio de la clase String, mencionamos una función que convierte un string en un número. Esta función es muy usuada cuando creamos applets. Introducimos el número en un control de edición, se obtiene el texto y se guarda en un string. Luego, se convierte el string en número entero mediante la función estática Integer.parseInt, y finalmente, usamos dicho número. String str=" 12 "; int numero=Integer.parseInt(str);
  • 2. Si se introducen caracteres no numéricos, o no se quitan los espacios en blanco al principio y al final del string, mediante la función trim, se lanza una excepción NumberFormatException. AppAccelerator(tm) 1.1.034 for Java (JDK 1.1), x86 version. Copyright (c) 1998 Borland International. All Rights Reserved. java.lang.NumberFormatException: 12 at java.lang.Integer.parseInt(Compiled Code) at java.lang.Integer.parseInt(Integer.java:390) at excepcion.ExcepcionApp.main(ExcepcionApp.java:8) Para ver este texto, se selecciona el elemento del menú del IDE Run/Parematers. En el cuadro de diálogo que aparece activar el botón de radio Set run output to Execution Log. Luego, se corre la aplicación Run/Run. Se selecciona el elemento del menú View/Execution Log, para que se muestre en una ventana la salida del programa. Para restaurar la salida a la consola, la ventana DOS, se selecciona de nuevo Run/Parematers. En el cuadro de diálogo que aparece, se activa el botón de radio Set run output to Console window. El mensaje que aparece en la ventana nos indica el tipo de excepción NumberFormatException, la función que la ha lanzado Integer.parseInt, que se llama dentro de main. Objeto no inicializado Habitualmente, cuando llamanos desde un objeto no inicializado, a una función miembro. public static void main(String[] args) { String str; str.length(); //... } El compilador se queja con el siguiente mensaje "variable str might not have been initilized". En otras ocasiones, se lanza una excepción del tipo NulPointerException. Fijarse que en la porción de código que sigue, grafico es una variable de instancia que es inicializada por defecto a null. class MiCanvas....{ Grafico grafico; public void paint(...){ grafico.dibuja(); //... } //... }
  • 3. Como vemos en la porción de código, si al llamarse a la función paint, el objeto grafico no ha sido inicializado con el valor devuelto por new al crear un objeto de la clase Grafico o de alguna de sus clases derivadas, se lanza la excepción NullPointerException apareciendo en la consola el siguiente texto. Exception occurred during event dispatching: java.lang.NullPointerException at grafico1.MiCanvas.paint(MiCanvas.java:43) at sun.awt.windows.WComponentPeer.handleEvent(Compiled Code) at java.awt.Component.dispatchEventImpl(Compiled Code) at java.awt.Component.dispatchEvent(Compiled Code) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Entrada/salida En otras situaciones el mensaje de error aparece en el momento en el que se compila el programa. Así, cuando intentamos leer un carácter del teclado, llamamos a la la función System.in.read(); Cuando compilamos el programa, nos aparece un mensaje de error que no nos deja proseguir. unreported exception: java.io.IOException; must be caught or declared to be thrown Captura de las excepciones Empecemos por solucionar el error que se produce en el programa durante la compilación. Tal como indica el mensaje que genera el compilador, se ha de poner la sentencia System.in.read(); en un bloque try...catch, del siguiente modo. try { System.in.read(); }catch (IOException ex) { } Para solucionar el error que se produce en el programa durante su ejecución, se debe poner la llamada a Integer.parseInt en el siguiente bloque try...catch. String str=" 12 "; int numero; try{ numero=Integer.parseInt(str);
  • 4. }catch(NumberFormatException ex){ System.out.println("No es un número"); } En el caso de que el string str contenga caracteres no numéricos como es éste el caso, el número 12 está acompñado de espacios en blanco, se produce una excepción del tipo NumberFormatException que es capturada y se imprime el mensaje "No es un número". En vez de un mensaje propio se puede imprimir el objeto ex de la clase NumberFormatException try{ //... }catch(NumberFormatException ex){ System.out.println(ex); } La clase base Throwable de todas las clases que describen las excepciones, redefine la función toString, que devuelve el nombre de la clase que describe la excepción acompañado del mensaje asociado, que en este caso es el propio string str. java.lang.NumberFormatException: 12 Podemos extraer dicho mensaje mediante la función miembro getMessage, del siguiente modo try{ //... }catch(NumberFormatException ex){ System.out.println(ex.getMessage()); } Manejando varias excepciones Vamos a crear un programa que divida dos números. Supongamos que los números se introducen én dos controles de edicion. Se obtiene el texto de cada uno de los controles de edición que se guardan en dos strings. En esta situación se pueden producir dos excepciones NumberFormatException, si se introducen caracteres no numéricos y ArithmeticException sise divide entre cero. public class ExcepcionApp { public static void main(String[] args) { String str1="12"; String str2="0";
  • 5. String respuesta; int numerador, denominador, cociente; try{ numerador=Integer.parseInt(str1); denominador=Integer.parseInt(str2); cociente=numerador/denominador; respuesta=String.valueOf(cociente); }catch(NumberFormatException ex){ respuesta="Se han introducido caracteres no numéricos"; }catch(ArithmeticException ex){ respuesta="División entre cero"; } System.out.println(respuesta); } } Como vemos las sentencias susceptibles de lanzar una excepción se sitúan en un bloque try...catch. Si el denominador es cero, se produce una excepción de la clase ArithmeticException en la expresión que halla el cociente, que es inmediatamente capturada en el bloque catch que maneja dicha excepción, ejecutándose las sentencias que hay en dicho bloque. En este caso se guarda en el string respuesta el texto "División entre cero". Hay veces en las que se desea estar seguro de que un bloque de código se ejecute se produzcan o no excepciones. Se puede hacer esto añadiendo un bloque finallydespués del último catch. Esto es importante cuando accedemos a archivos, para asegurar que se cerrará siempre un archivo se produzca o no un error en el proceso de lectura/escritura. try{ //Este código puede generar una excepción }catch(Exception ex){ //Este código se ejecuta cuando se produce una excepción }finally{ //Este código se ejecuta se produzca o no una excepción }