POO1-U3-A3
-
Upload
robert-garrett -
Category
Documents
-
view
221 -
download
0
Transcript of POO1-U3-A3
-
8/12/2019 POO1-U3-A3
1/6
Materia:Programacin Orientada a Objetos 1
Actividad 3:Manejo de excepciones
Alumno:
MANEJO E E!"EP"#ONE$ EN JA%A
Podemos considerar que una Excepcin en
programacin es una situacin poco habitual queprovoca resultados inesperados o incoherentes en
nuestros mtodos, pero que es contemplada en el
anlisis, diseo y construccin de nuestro sistema :
el sistema se puede recuperar de estas situaciones.Como ejemplos podemos citar envos duplicados dein!ormacin, una cada de nuestra base dedatos, in!ormacin invlida o incosistente como un
n"mero de tel!ono con un !ormato incorrecto...
Para mantener cdigos robustos que manejen estas
situaciones, los lenguajes de programacin
incorporan mecanismos para el manejo de
e#cepciones como parte de sus estructuras de
control.
$ las situaciones poco habituales que provocan
resultados inesperados o incoherentes y que no
controlamos % &so es
un error en tiempo de ejecucin en nuestro
-
8/12/2019 POO1-U3-A3
2/6
sistema, que puede desembocar en una
inconsistencia de datos en nuestra base de datos
o en la !inali'acin inesperada de nuestro
sistema.
(n buen indicador de la calidad de un sistemaso&t'are es comprobar cmo responde cuando seproducen !allos, ya sean esperados y controlados)e#cepciones* o inesperados e incontrolados
)errores*.
Excepciones en Java
&n el caso de +ava se utili'an bloques try catch !inally, thro- y thro-s, y las subclases
de java(lang(Exception. (n mtodo lan'arn
)mediante un thro-* una e#cepcin )una clase que
hereda java.lang.ception* provocando que seabandone el !lujo de ejecucin normal y cediendo el
control al bloque en el que se capturar )en un
bloque try catch !inally*. &n la declaracin del
mtodo se incluye thro-s para avisar de que puede
lan'ar una e#cepcin.isten muchas e#cepciones prede!inidas en +ava,pero tambin nosotros podemos creare#cepciones particulares a nuestros sistemas
: basta crear una clase que e#tienda de
java.lang.ception.
-
8/12/2019 POO1-U3-A3
3/6
Existen dos grandes tipos de
excepciones en Java :
")ec*ed Exceptions )e#cepciones controladas*.
e corresponden a errores previstos, controlados
en el codigo y por tanto permite al sistema
recuperarse. on lo que hemos de!inido
anteriormente como excepciones.
&lcompilador Java es una gran ayuda ya que te
obliga a capturarlas en un bloque try catch
!inally o a declarar que el mtodo puede devolveruna e#cepcin )declarando un thro-s*.
+nc)ec*ed Exceptions )e#cepciones nocontroladas*. on e#cepciones no previstas ni
controladas, y por tanto puede provocar
inconsistencia de datos y la !inali'acin
inesperada del sistema : lo que hemos de!inido
anteriormente como errores en tiempo de
ejecucin. &n +ava se implementan como
subclases de java.lang./untimeception )que a
su ve' heredade java.lang.ception* y el compilador no nosobliga a capturarlas ni a declarar que nuestrosmtodos pueden lan'arlas.
0ullPointerception o1llegal2rgumentception son dos ejemplos
de estas e#cepciones.
-
8/12/2019 POO1-U3-A3
4/6
Manejo de Excepciones en una ar,uitecturaJava
2l invocar un mtodo deberamos obtener como
resultado o bien el resultado normal de la
ejecucin o bien no )acer absolutamente nada.
3as e#cepciones nos servirn para comunicar a las
capas superiores in!ormacin sobre por qu no se ha
hecho nada si !uese necesario.3a utili'acin de bloques try catch !inally es mscostoso en trminos de tiempo de ejecucin y
recursos que la utili'acin de bloques i! else.
Por tanto es recomendable utili'ar e#cepciones
para controlar el !lujo, es mejor utili'ar los
mecanismos de control de !lujo ya e#istentes
que consumen menos y son ms !cilmente
mantenibles.
4ampoco es recomendable capturar una e#cepcinen un bloque catch y no hacer nada, o no
hacer nada ms que lan'arla nuevamente.
&s aconsejable que las e#cepciones no rompan la
encapsulacin. Por ejemplo si en una capa in!erior
se produce una e#cepcin )por ejemplo una
53ception en la capa de persistencia*, a la capa
superior no le interesa conocer los detalles de
implementacin, sino:
si se puede recuperar del error, es aconsejable
-
8/12/2019 POO1-U3-A3
5/6
trans!ormar la e#cepcin original en otrae#cepcin controlada oc)ec*ed con la
in!ormacin necesaria para recuperar que la
capa superiro se pueda recuperar.
o si no puede recuperarse del error pasamos ala capa superior una e#cepcin no
controlada o unc)ec*ed si no se debe continuar
el !lujo normal, o bien un resultado nulo si no se
quiere hacer nada especial.
2l capturar e#cepciones tambin capturamos las
que heredan de sta. Por tanto al capturar una
excepcin del tipo java(lang(Exception tambin
estamos capturando todas las unchec6ed )ya que
heredan de java.lang./untimeception y sta
hereda de java.lang.ception*. 7ay que tener
cuidado de si esto es realmente lo que queremos.
Por todo lo dicho anteriormente, la gestin de las
e#cepciones nos debera de servir para recuperarnos
ante errores esperados. Pero deberamos tener en
cuenta que pueden e#istir errores no controlados.
Podramos gestionar estos errores en un -nico
punto, desviando todas las e#cepciones no
capturadas a un action donde se tratarn)tpicamente presentacin de una pgina de error
con un mensaje y las acciones permitidas para el
usuario, as como la auditora del error*. Podemos
indicar en el -eb.#ml esta redireccin :
-
8/12/2019 POO1-U3-A3
6/6
8errorpage9
8e#ception
type9java.lang.4hro-able8e#ceptiontype98location9gestion&rrores.do8location98errorpage9