4. El manejo de errores en PHP desarrollo web PDF

Title 4. El manejo de errores en PHP desarrollo web
Course Desarrollo Web
Institution Universidad Siglo 21
Pages 9
File Size 350.3 KB
File Type PDF
Total Downloads 50
Total Views 131

Summary

material de estudio para la materia de la Universidad Siglo 21 desarrollo web 2021 2022 del periodo Octubre Diciembre...


Description

El manejo de errores en PHP

Desarrollo Web

Manejo de errores Si conoces o has programado previamente en algunos lenguajescomo Java o C,sabrás de la existencia de mecanismos que permiten manejar errores y excepciones dentro de un programa. Una de las características que PHP agregó en su versión 5 es un objeto destinado al manejo de excepciones con una sintaxis muy similar a Java.Estas funciones nos permiten depurar condiciones de error, recuperar nuestro script de situaciones inesperadas o no deseadas y facilitar la creación de pantallas más limpias y libres de errores para el usuario.

Errores y excepciones En principio, conviene diferenciar errores de excepciones, ya que no significan lo mismo. Una excepción es una condición que se experimenta en unprograma inesperadamente y no puede ser manejada por el código quehemos escrito. Por lo tanto, y a modo general, no causan que nuestro script se frene, y es posible detectarlas a tiempo y especificar una acción por seguir.Las excepciones, si son tratadas correctamente, pueden dar más fiabilidada nuestra aplicación. Vamos a plantear un ejemplo para comprender mejor el tema. Imaginemos que tenemos un código que simula larecepción de un identificador de usuario ($id_usuario) en una base de datos. Introducimos algunas funciones de manejo de cadenas en PHP y comprobaremos que se cumplan las siguientes condiciones para nuestra variable:   

que los 3 primeros caracteres sean “usr”; que la longitud de la cadena sea, al menos, de 7 caracteres; que exista en la base de datos.

.

Como se ve en el ejemplo, cualquier condición que se valide dentro de la función puede dar un resultado negativo, y solo uno de ellosdará un resultado positivo, que sería cuando el usuario existe en la base de datos.

La clase Exception Exception es el nombre de una clase que ha sido introducida desde PHP5 para manejar diferentes comportamientos que escapan al comportamiento esperado de un script. Al instanciar la clase Exception, podemos capturar los errores y mostrar mensajes personalizados de estos, que es más elegante y seguro a que el usuario final vea un mensaje de error en inglés y sin información acerca de este. Si seguimos con el ejemplo, tenemos: .(Cowburn, s. f., https://goo.gl/4w7nGP).

Errores nativos de PHP El lenguaje PHP genera tres tipos de errores nativos dependiendo de su naturaleza:  NOTICE: no son errores graves y no crean problemas complejos en la ejecución. Pordefecto, no se muestran en pantalla cuando

4

 

suceden a menos que digamoslo contrario en el archivo de configuración “php.ini”. WARNING: alguna parte del código ha causado un error, pero la ejecucióncontinúa siguiendo su hilo. FATAL ERROR: un problema grave que aborta la ejecución del script.

Estos tipos de errores son representados por diferentes variables: E_USER_NOTICE, E_USER_WARNING y E_USER_ERROR comúnmente. “La función error_reporting() establece la directiva en tiempo de ejecución para saber qué errores mostrará en pantalla en elmomento de la ejecución. Si el parámetro opcional “level” no se define, la función error_reporting() solo devolverá el nivel actual de notificación de error (presente en “php.ini”)” (Manual de PHP, 2015, recuperado de http://php.net/manual/es/function.error-reporting.php). Por ejemplo: .

El manejo de errores queda generalmente limitado,en la gran mayoría, a los errores del tipo WARNING, ya que los errores fatales se consideran críticos y no pueden controlarse,porque abortan la ejecución del script.Para ver el listado de tipos de errores y registros en PHP, consulta el manual (Cowburn, s. f., https://goo.gl/1Ps1Ww). Veamos un poco más las diferencias sobre este tipo de advertencias y errores más comunes para entender mejor.E_NOTICE es un tipo de error en tiempo de ejecución que no es fatal, es decir, no detiene la ejecución de nuestro script cuando sucede. Ejemplo de elloes intentar mostrar una variable que no fue definida. En tal caso, nos mostraría algo similar a lo siguiente: .

Resultado de la ejecución:

5

Notice: Undefined variable: edad in ../ejemplos/error.phpon line 3.

Entonces podemos resumir, en los siguientes ítems, la constante E_NOTICE:  No es fatal (no aborta la ejecución del script).  Generalmente, E_NOTICE es fruto de variables que se intentan utilizar sin haber sido previamente declaradas.  Se puede recuperar con un buen uso del manejo de errores o de excepciones, tal como hemos visto anteriormente.  Por defecto, las advertencias del tipo E_NOTICE son almacenadas en el archivo error_log.  Las apariciones más frecuentes de E_NOTICE son debido a: o uso de variables no inicializadas; o uso de variables de servidor no inicializadas; o uso de constantes no inicializadas. Por otro lado, tenemos las advertencias E_WARNING en PHP que tampoco son fatales, por lo que no detienen la ejecución de nuestro script. Veamos un ejemplo: .

El resultado: PHP Warning: include() [function.include]: Failed opening 'database.php' for inclusion (include_path='.:/ ---') in ../ejemplos/error.php on line 3.

Podemos resumir algunos puntos sobre los errores del tipo E_WARNING:  No es fatal (no aborta la ejecución del script).  Generalmente, E_WARNING es fruto de archivos que se intentan utilizar o incluir en el script que no pueden ser localizados.  Se puede recuperar con un buen uso del manejo de errores o de excepciones, como hemos visto anteriormente.  Por defecto, las advertencias del tipo E_WARNING son almacenadas en el archivo error_log.  Las apariciones más frecuentes de E_NOTICE son debido a: o Inclusión o intento de apertura de archivos no encontrados. o Errores de la base de datos MySQL(o cualquier otra); por ejemplo, el fallo al intentar validar el usuario para la conexión. o Envío de múltiples “headers” o de información al navegador antes de realizar un redireccionamiento.

6

Por último, entre los errores más comunes, encontramos los del tipo E_ERROR, que, en caso de aparecer, nos abortan la ejecución del script. El ejemplo más común es el llamado a una función no declarada, como podemos ver en el código siguiente:

Al ejecutar las líneas anteriores, veremos un error similar a: Fatal error: Call to undefined ./ejemplos/error.php on line 1.

function

traerEdad()

in

Podemos resumir algunos puntos sobre los errores del tipo E_ERROR:  Es “fatal”: la aparición de un error de este tipo nos aborta la ejecución del script.  Generalmente, E_ERROR ocurre con errores referidos a problemas de asignación de memoria.  No se pueden recuperar mediante técnicas de manejo de errores o de excepciones.  Por defecto, los errores del tipo E_ERROR son guardados en el archivo error_log.  Las apariciones más frecuentes de E_ERROR son debido a: o Llamado a funciones no declaradas. o Buclesinfinitos (WHILE, FOR, etc.). o Concatenación de cadenas o manipulación dinámica de cadenas infinitas. o Creación de objetos no definidos. o Redeclaración de una clase existente. o Redeclaración de una función ya definida.

Controlando los errores Cuando aparezca alguno de los errores (no fatales) en nuestro script, se mostrarán mensajes en la pantalla que el usuario final difícilmente pueda entender, tales como los resultados de los códigos mostrados a modo de ejemplo anteriormente. La solución para este tipo de inconvenientes es crear nuestra propia función para controlar y mostrar los errores de manera que sean más fáciles de comprender por el usuario. Veamos un ejemplo: .

7

Con el bloque anterior hemos creado una función errores() que mostrará los fallos, pero con un formato que adaptemos nosotros incluso al diseño de nuestra propia página. Hasta ahora, hemos definido la función; pero, para poder utilizarla, hay que llamar a la función de PHP set_error_handler() para que el lenguaje tenga conocimiento de que errores() será la encargada de gestionar las posibles fallas en el comportamiento del script: .

Al incluir este código, todos los errores que se produzcan en el nivel que tengapermitido (WARNING, NOTICE O FATAL) serán enviados a la funciónerrores() para mostrar el mensaje adaptado por nosotros.

8

Referencias Cobo, A., Gómez, P., y Pérez, D. (2005). PHP y MySQL: tecnologías para el desarrollo de aplicaciones web [versión electrónica]. Madrid, ES: Díaz de Santos. Cowburn, P. (Ed.). (s. f.). https://php.net/manual/es/index.php

Manual

de

PHP.Recuperado

de

Gauchat, J. D. (2013). El gran libro de HTML5,CSS3 y Javascript. Barcelona: Marcombo. Gilmore, J. (2010). Beginning PHP and MySQL. EstadosUnidos: Addison-Wesley.

9...


Similar Free PDFs