POO1-U3-A3

Embed Size (px)

Citation preview

  • 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