27
1_1_5 Objetos 1_1_5 Objetos excepción excepción Apoyo SSD3 Apoyo SSD3

1 1 5 Objetos Excepcion

  • Upload
    uvm

  • View
    1.534

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 1 1 5 Objetos Excepcion

1_1_5 Objetos 1_1_5 Objetos excepciónexcepción

Apoyo SSD3Apoyo SSD3

Page 2: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 22

IntroducciónIntroducción

Un código robusto es un código que Un código robusto es un código que responde apropiadamente a entradas responde apropiadamente a entradas inválidas y condiciones ambientales inválidas y condiciones ambientales inesperadas.inesperadas.

Durante la ejecución de un programa Durante la ejecución de un programa pueden ocurrir muchas fallas — o eventos pueden ocurrir muchas fallas — o eventos excepcionales— que interrumpen el flujo excepcionales— que interrumpen el flujo normal de un programanormal de un programa

Page 3: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 33

IntroducciónIntroducción

Un código robusto maneja adecuadamente las Un código robusto maneja adecuadamente las fallas: continúa la ejecución a pesar del fallas: continúa la ejecución a pesar del problema o termina la ejecución después de problema o termina la ejecución después de desplegar un mensaje de errordesplegar un mensaje de error

El El manejo de excepciones manejo de excepciones es un mecanismo es un mecanismo que permite que las fallas sean manejadas fuera que permite que las fallas sean manejadas fuera del flujo normal del código.del flujo normal del código.

El código resultante es claro, fácil de leer y fácil El código resultante es claro, fácil de leer y fácil de mantenerde mantener

Page 4: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 44

Con el manejo de excepciones, el flujo normal del código es especificado en elcuerpo de un bloque try y cada falla es manejada en un bloque catch que se encuentra separado del flujo normal del código.

Page 5: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 55

Manejo de excepcionesManejo de excepciones

En Java, una En Java, una excepciónexcepción es un objeto que es un objeto que describe una situación anormal. Un describe una situación anormal. Un objeto objeto excepción (exception object) excepción (exception object) contiene la contiene la siguiente información:siguiente información: El tipo de excepciónEl tipo de excepción Una pila de llamadas (Una pila de llamadas (call stackcall stack) que indica ) que indica

donde ocurrió la excepcióndonde ocurrió la excepción Una cadena de caracteres con información Una cadena de caracteres con información

adicional sobre la excepciónadicional sobre la excepción

Page 6: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 66

Manejo de excepcionesManejo de excepciones

Cuando ocurre una situación anormal, un Cuando ocurre una situación anormal, un método puede crear un objeto excepción método puede crear un objeto excepción y después y después lanzarlolanzarlo ( (throwthrow).).

Si el método que hace la llamada no está Si el método que hace la llamada no está preparado para preparado para atraparatrapar ( (catch)catch) el objeto el objeto excepción, éste lanza el objeto excepción excepción, éste lanza el objeto excepción al método que al método que lolo llama y así llama y así sucesivamente.sucesivamente.

Page 7: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 77

Manejo de excepcionesManejo de excepciones

El método que atrapa el objeto excepción El método que atrapa el objeto excepción utiliza la información que se encuentra en utiliza la información que se encuentra en el objeto para manejar la excepciónel objeto para manejar la excepción

Para prevenir la terminación prematura de Para prevenir la terminación prematura de un programa, debes incluir bloques un programa, debes incluir bloques try-try-catchcatch que permitan que el programa se que permitan que el programa se recupere de las fallas.recupere de las fallas.

Page 8: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 88

Page 9: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 99

Page 10: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1010

Page 11: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1111

Manejo de excepcionesManejo de excepciones

En la clase En la clase ExceptionDemoExceptionDemo, el , el método método mainmain llama a llama a  methodAmethodA, , methodAmethodA llama llama a a methodBmethodB, , methodBmethodB llama llama aamethodCmethodC y y methodCmethodC llama a llama a methodDmethodD. .

El último método de la secuencia, El último método de la secuencia, methodDmethodD, , crea un nuevo objeto de excepción y lo crea un nuevo objeto de excepción y lo lanza al lanza al methodCmethodC. .

Page 12: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1212

Manejo de excepcionesManejo de excepciones

La excepción pasa La excepción pasa por por methodCmethodC y y methodBmethodB hasta que es hasta que es atrapado por atrapado por methodAmethodA. .

methodAmethodA maneja la excepción imprimiendo maneja la excepción imprimiendo un rastro de la pila y terminando el un rastro de la pila y terminando el programa.programa.

Page 13: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1313

Métodos de los objetos excepciónMétodos de los objetos excepción

Los objetos excepción cuentan con un Los objetos excepción cuentan con un grupo de métodos comunes. Incluyen:grupo de métodos comunes. Incluyen:

• String getMessage()String getMessage()..• Obtiene el argumento que fue pasado al Obtiene el argumento que fue pasado al

constructor del objeto de excepción.constructor del objeto de excepción.• String toString()String toString()..

• El nombre de la excepción (su tipo), seguido El nombre de la excepción (su tipo), seguido por dos puntos ( por dos puntos ( :: ), seguidos por ), seguidos por elelStringString regresado por el método regresado por el método getMessagegetMessage..

Page 14: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1414

Métodos de los objetos excepciónMétodos de los objetos excepción

void printStackTrace()void printStackTrace(). Este método . Este método despliega, en el flujo de error estándar, despliega, en el flujo de error estándar, el el StringString regresado por el método regresado por el método toStringtoString, , seguido por la información que muestra seguido por la información que muestra dónde fue lanzada la excepción.dónde fue lanzada la excepción.

Page 15: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1515

El Bloque try-catchEl Bloque try-catch

Si un método elige manejar una Si un método elige manejar una excepción, debe tener un bloque excepción, debe tener un bloque try-catchtry-catch. .

Un bloque Un bloque trytry delimita el código que puede delimita el código que puede lanzar una excepciónlanzar una excepción

Page 16: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1616

TipoExcepción es el tipo, o el nombre de la clase de la excepción que el bloque catch manejará. Observa que un bloque catch se parece a un encabezado de método porque toma un argumento.

Page 17: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1717

Page 18: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1818

Page 19: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 1919

La Cláusula throwsLa Cláusula throws

Si una excepción verificada puede ocurrir Si una excepción verificada puede ocurrir en un método y dicho método no tiene un en un método y dicho método no tiene un bloque bloque catchcatch para manejar la excepción para manejar la excepción verificada, entonces ésta verificada, entonces ésta debe debe ser ser declarada en el encabezado del método declarada en el encabezado del método utilizando una cláusulautilizando una cláusulathrowsthrows..

Page 20: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2020

La Cláusula throwsLa Cláusula throws

En el siguiente código, ni el método En el siguiente código, ni el método readIntegerreadInteger ni ni el método el método main( )main( ) atrapan la excepción atrapan la excepción IOException; IOException; por lo tanto, ambos declaran por lo tanto, ambos declaran IOExceptionIOException en sus en sus cláusulas cláusulas throwsthrows..

Page 21: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2121

Page 22: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2222

Page 23: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2323

La Instrucción throwLa Instrucción throw

Los métodos definidos por el usuario Los métodos definidos por el usuario también pueden lanzar excepciones. también pueden lanzar excepciones.

Para lanzar una excepción, utilizan la Para lanzar una excepción, utilizan la palabra clave palabra clave throwthrow, seguida por un objeto , seguida por un objeto excepción. Por ejemplo:excepción. Por ejemplo:

throw new OutOfRangeException();throw new OutOfRangeException();

Page 24: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2424

El objeto excepción es creado como El objeto excepción es creado como cualquier otro objeto, utilizando el cualquier otro objeto, utilizando el operador operador newnew y un constructor. y un constructor.

La siguiente sentencia utiliza el La siguiente sentencia utiliza el constructor de la constructor de la excepción excepción OutOfRangeExceptionOutOfRangeException que acepta un que acepta un argumento de tipo argumento de tipo StringString..

throw new OutOfRangeException("Not a valid number");throw new OutOfRangeException("Not a valid number");

Page 25: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2525

Documentando Excepciones con Documentando Excepciones con JavadocJavadoc

La etiqueta Javadoc para una excepción La etiqueta Javadoc para una excepción es la etiqueta es la etiqueta @throws@throws —también puede —también puede emplearse la etiqueta @emplearse la etiqueta @exceptionexception. .

El comentario Javadoc para un método El comentario Javadoc para un método debe tener una etiqueta debe tener una etiqueta @throws@throws por cada por cada excepción verificada que el método excepción verificada que el método pudiera lanzar. pudiera lanzar.

Page 26: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2626

También puede tener También puede tener etiquetas etiquetas @throws@throws para las excepciones no para las excepciones no verificadas, pero no es necesario.verificadas, pero no es necesario.

El comentario Javadoc El comentario Javadoc nono debe tener una debe tener una etiqueta etiqueta @throws@throws para las excepciones para las excepciones atrapadas y manejadas por el método. atrapadas y manejadas por el método.

Utiliza los siguientes lineamientos para Utiliza los siguientes lineamientos para documentar excepciones:documentar excepciones:

Page 27: 1 1 5 Objetos Excepcion

Mtl Lourdes CahuichMtl Lourdes Cahuich 2727

• Cuando el método lanza más de una Cuando el método lanza más de una excepción, cada excepción debe estar excepción, cada excepción debe estar documentada en una línea diferente y documentada en una línea diferente y debe ser enlistada alfabéticamente.debe ser enlistada alfabéticamente.

• Ubica las etiquetas Ubica las etiquetas @throws@throws después de las después de las etiquetas etiquetas @param@param y y @return@return..

• Las etiquetas Las etiquetas @throws@throws deben describir la(s) deben describir la(s) situación(es) que causarán la excepciónsituación(es) que causarán la excepción