ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

16
ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados

Transcript of ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

Page 1: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

ECOM-6030CAPÍTULO 7

EXCEPTION HANDLING

Prof. Nelliud D. Torres© - Derechos Reservados

Page 2: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

CONTENIDO• Conceptos de Exception handling• Estructuras de control del Exception (try…

throw…catch)• La clase Exception• Excepciones definidas por el usuario• Excepciones para Bob’s Auto Parts

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 2

Page 3: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

CONCEPTOS DE EXCEPTION HANDLING• La idea básica del manejo de excepciones es que el código se

ejecuta dentro de lo que se conoce como un try block.• EL formato del try block es:try{ // el código va aquí}Cuando algo falla dentro del try block, se puede tener control

de problema. Esto se llama throwing an exception.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 3

Pag. 191

Page 4: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

CONCEPTOS DE EXCEPTION HANDLING – CONT. - 1

•Algunos lenguajes como JAVA manejan las excepciones automáticamente.• En PHP el programador tiene que manejarlas manualmente.• Para capturar y manejar una excepción se utiliza el siguiente

formato:throw new Exception(‘message’, code);• El keyword throw activa el mecanismo de manejo de

excepciones.•Necesita pasársele un valor.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 4

Pag. 191 - 192

Page 5: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

CONCEPTOS DE EXCEPTION HANDLING – CONT. - 2

•Después del try block, hay que poner al menos un catch block.• El formato es el siguiente:catch (typehint exception)

{

// Manejo de la excepción

}• Se puede tener más de un catch asociado a un try block. Esto es

útil si se desea capturar más de un tipo de excepción.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 5

Pag. 192

Page 6: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

CONCEPTOS DE EXCEPTION HANDLING – CONT. - 3

•A continuación se muestra un ejemplo del código en PHP:

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 6

Pag. 192

Page 7: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

CONCEPTOS DE EXCEPTION HANDLING – CONT. - 4

• Ejemplo de la corrida del código anterior:

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 7

Pag. 193

Page 8: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

LA CLASE LLAMADA Exception• PHP5 viene con una clase integrada (built-in) llamada Exception. Esta clase incluye los siguientes métodos:

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 8

Pag. 193

Page 9: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

USER-DEFINED Exception• En lugar de crear una instancia y pasarla a la clase Exception, uno puede pasar cualquier objeto que uno desee.• También podemos crear sub-clases de esa clase.• Esto nos puede ayudar en la depuración (debug) del código.• El manual de PHP tiene un “esqueleto” de la clase Exception.• El código que se muestra en el próximo slide se encuentra en la página http://www.php.net/zend-engine-2.php (Listing 7.2)

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 9

Pag. 194

Page 10: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

Exception Class Listing 7.2 Part - 1

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 10

Pag. 194

Page 11: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

Exception Class Listing 7.2 Part - 2

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 11

Pag. 195

Page 12: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

Exception Class Listing 7.2 Part - 3

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 12

Pag. 195

• Si se fijan en el código anterior, muchos de los métodos son finales o sea que no se pueden modificar su comportamiento.

• Sin embargo se puede sobrepasar (override) la función __toString() para que uno le pueda poner el formato al mensaje de error que uno quiera.

• A continuación se muestra un ejemplo de una sub-clase de la clase Exception.

Page 13: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

User-Define Exception Class Listing 7.3

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 13

Pag. 195 -196

Page 14: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

Exception Class Listing 7.3 Corrida

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 14

Pag. 196

Page 15: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO 1

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 15

• Correr y utilizar el código que trae el capítulo para manejar las excepciones que puedan ocurrir cuando se trabajan archivos.• El código mejora el laboratorio del capítulo 2 en cuanto al

manejo de errores producidos por archivos que no se encuentran y otros errores similares.•Algunos errores que ocurren en el manejo de archivos son:

Archivos que no pueden abrirse, un lock que no puede obtenerse, un archivo al que no se le puede escribir, etc.• El listado del programa se puede bajar en la página del

profesor y en el libro se encuentra impreso desde la página 197 hasta la 200.

Pag. 197

Page 16: ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.

REFERENCIAS

• PHP and MySQL Web Development, Third Edition, Luke Welling, and Laura Thomson

• http://www.easyphp.org/

• http://www.php.net/zend-engine-2.php (Manual de PHP de Object Oriented en línea)

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 16