POO_U3_A3_ANET

download POO_U3_A3_ANET

of 5

Transcript of POO_U3_A3_ANET

  • 8/10/2019 POO_U3_A3_ANET

    1/5

    1

    Programacin Orientada a

    Ob etos

  • 8/10/2019 POO_U3_A3_ANET

    2/5

    2

    Nombre: Antonio Escobar Toledo

    Carrera: Ingeniera en desarrollo de software

    Matricula: AL11500136

    Facilitador: PABLO SANCHEZ LUNA

    Email:[email protected]

    Asignatura: Programacin Orientada a Objetos

    Unidad: 3

    Tema: Manejo de excepciones

    mailto:[email protected]:[email protected]:[email protected]
  • 8/10/2019 POO_U3_A3_ANET

    3/5

    3

    Manejo de excepciones

    Podemos considerar que una Excepcin en programacin es una situacin poco

    habitual que provoca 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 de informacin, una cada denuestra base de datos, informacin invlida o inconsistente como un nmero detelfono con un formato incorrecto...

    Para mantener cdigos robustos que manejen estas situaciones, los lenguajes de

    programacin incorporan mecanismos para el manejo de excepciones como parte

    de sus estructuras de control.

    Y las situaciones poco habituales que provocan resultados inesperados oincoherentes y que no controlamos. Eso es un error en tiempo de ejecucin ennuestro sistema, que puede desembocar en una inconsistencia de datos ennuestra base de datos o en la finalizacin inesperada de nuestro sistema.

    Un buen indicador de la calidad de un sistema software es comprobar cmoresponde cuando se producen fallos, ya sean esperados y controlados(excepciones) o inesperados e incontrolados (errores).

    Excepciones en Java

    En el caso de Java se utilizan bloques try - catch - finally, throw y throws, y lassubclasesdejava.lang.Exception. Un mtodo lanzarn (mediante un throw) una excepcin(una clase que hereda java.lang.Exception) provocando que se abandone el flujode ejecucin normal y cediendo el control al bloque en el que se capturar (en unbloque try - catch - finally). En la declaracin del mtodo se incluye throws paraavisar de que puede lanzar una excepcin.Existen muchas excepciones predefinidas en Java, pero tambin nosotrospodemos crearexcepciones particulares a nuestros sistemas: basta crear una clase que extiendade java.lang.Exception.

  • 8/10/2019 POO_U3_A3_ANET

    4/5

    4

    Existen dos grandes tipos de excepciones en Java:

    Checked Exceptions (excepciones controladas). Se corresponden a erroresprevistos, controlados en el cdigo y por tanto permite al sistema recuperarse. Sonlo que hemos definido anteriormente como excepciones.

    El compilador Java es una gran ayuda ya que te obliga a capturarlas en unbloque try - catch - finally o a declarar que el mtodo puede devolver unaexcepcin (declarando un throws).

    Unchecked Exceptions (excepciones no controladas). Son excepciones noprevistas ni controladas, y por tanto puede provocar inconsistencia de datos y lafinalizacin inesperada del sistema: lo que hemos definido anteriormente comoerrores en tiempo de ejecucin.

    En Java se implementan como subclases de java.lang.RuntimeException (que asu vez hereda de java.lang.Exception) y el compilador no nos obliga a capturarlasni a declarar que nuestros mtodos pueden lanzarlas. NullPointerException oIllegalArgumentException son dos ejemplos de estas excepciones.

    Manejo de Excepciones en una arquitectura Java

    Al invocar un mtodo deberamos obtener como resultado o bien el resultadonormal de la ejecucin o bien no hacer absolutamente nada. Las excepciones nosservirn para comunicar a las capas superiores informacin sobre por qu no seha hecho nada si fuese necesario.La utilizacin de bloques try - catch - finally es ms costoso en trminos de tiempode ejecucin y recursos que la utilizacin de bloques if - else.

    utilizar los mecanismos de control de flujo ya existentes que consumen menos yson ms fcilmente mantenibles.

    Tampoco es recomendable capturar una excepcin en un bloque catch y no hacernada, o no hacer nada ms que lanzarla nuevamente.Es aconsejable que las excepciones no rompan la encapsulacin. Por ejemplo sien una capa inferior se produce una excepcin (por ejemplo una SQLException enla capa de persistencia), a la capa superior no le interesa conocer los detalles deimplementacin, sino:

    si se puede recuperar del error, es aconsejable transformar la excepcin originalen otra excepcin controlada ochecked con la informacin necesaria pararecuperar que la capa superior se pueda recuperar.

    o si no puede recuperarse del error pasamos a la capa superior una excepcinno

  • 8/10/2019 POO_U3_A3_ANET

    5/5

    5

    controlada o unchecked si no se debe continuar el flujo normal, o bien unresultado nulo si no se quiere hacer nada especial.

    Al capturar excepciones tambin capturamos las que heredan de sta. Por tanto alcapturar una excepcin del tipo java.lang.Exception tambin estamos

    capturando todas las unchecked (ya que heredan de java.lang.RuntimeException ysta hereda de java.lang.Exception). Hay que tener cuidado de si esto esrealmente lo que queremos.

    Por todo lo dicho anteriormente, la gestin de las excepciones nos debera deservir para recuperarnos ante errores esperados. Pero deberamos tener encuenta que pueden existir errores no controlados. Podramos gestionar estoserrores en un nico punto, desviando todas las excepciones no capturadas a unaction donde se tratarn (tpicamente presentacin de una pgina de error con unmensaje y las acciones permitidas para el usuario, as como la auditora del error).Podemos indicar en el web.xml esta redireccin:

    java.lang.Throwable/gestionErrores.do