Foros del Web » Programando para Internet » PHP »

Crear una funcion manejadora de errores propia

Estas en el tema de Crear una funcion manejadora de errores propia en el foro de PHP en Foros del Web. Amigos: Debo generar una función manejadora de errores propia, por ejemplo mostrar mi propio mensaje en el caso de querer usar una función no definida, ...
  #1 (permalink)  
Antiguo 10/11/2008, 09:43
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Crear una funcion manejadora de errores propia

Amigos:

Debo generar una función manejadora de errores propia, por ejemplo mostrar mi propio mensaje en el caso de querer usar una función no definida, o alguna advertencia (warning) cuando intente querer usar una variable no declarada.
Estuve viendo el ejemplo siguiente en php.net pero no se como aplicarlo correctamente:

Código PHP:
function miGestorErrores($num_err$cadena_err$archivo_err$linea_err)
{
    switch (
$num_err) {
    case 
E_USER_ERROR:
        echo 
"<b>Mi ERROR</b> [$num_err] $cadena_err<br />";
        echo 
"  Error fatal en la línea $linea_err en el archivo $archivo_err";
        echo 
", PHP " PHP_VERSION " (" PHP_OS ")<br />";
        echo 
"Abortando ejecución...<br />";
        exit(
1);
        break;

    case 
E_USER_WARNING:
        echo 
"<b>Mi ADVERTENCIA</b> [$num_err] $cadena_err<br />";
        break;

    case 
E_USER_NOTICE:
        echo 
"<b>Mi NOTICIA</b> [$num_err] $cadena_err<br />";
        break;

    default:
        echo 
"Tipo de error desconocido: [$num_err] $cadena_err<br />";
        break;
    }

    
/* No ejecutar el gestor de errores interno de PHP */
    
return true;

Espero que puedan ayudarme lo más pronto posible.
Desde ya muchas gracias a todos.

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #2 (permalink)  
Antiguo 10/11/2008, 09:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Crear una funcion manejadora de errores propia

¿Cuál es exactamente la parte que no entiendes o no logras realizar?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/11/2008, 09:55
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Crear una funcion manejadora de errores propia

David:

No logro que me muestre en pantalla mi propio texto al causar por ejemplo un FATAL ERROR.
Actualmente me muestra este error al intentar utilizar una funcion mal declarada:

Fatal error: Call to undefined function mostrar_mensaje() in xxxx\xxxx\listar.php on line 15

Y yo necesito por ejemplo mostrar ese mismo error pero con mi propio texto, soy claro?
Pero me interesa hacer bien general, es decir, utilizar mi propio manejador en este caso y en todos donde se genere un FATAL ERROR, WARNING o NOTICE.

Gracias.

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #4 (permalink)  
Antiguo 10/11/2008, 10:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Crear una funcion manejadora de errores propia

Debes colocar error_reporting(0); al inicio del código y con set_error_handler("funcion") hacer que se ejecute tu propio gestor cuando se produzca una advertencia o error.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 10/11/2008, 10:22
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Crear una funcion manejadora de errores propia

David:

Podrías darme un ejemplo de como utilizar set_error_handler("ManejadorErrores"), asi se llama mi funcion. Creo que ahí está mi error, no me doy cuenta como utilizarla.....
Dentro de ManejadorErrores tengo el código citado anteriormente:

Código PHP:
function miGestorErrores($num_err$cadena_err$archivo_err$linea_err)
{
    switch (
$num_err) {
    case 
E_USER_ERROR:
        echo 
"<b>Mi ERROR</b> [$num_err] $cadena_err<br />";
        echo 
"  Error fatal en la línea $linea_err en el archivo $archivo_err";
        echo 
", PHP " PHP_VERSION " (" PHP_OS ")<br />";
        echo 
"Abortando ejecución...<br />";
        exit(
1);
        break;

    case 
E_USER_WARNING:
        echo 
"<b>Mi ADVERTENCIA</b> [$num_err] $cadena_err<br />";
        break;

    case 
E_USER_NOTICE:
        echo 
"<b>Mi NOTICIA</b> [$num_err] $cadena_err<br />";
        break;

    default:
        echo 
"Tipo de error desconocido: [$num_err] $cadena_err<br />";
        break;
    }

    
/* No ejecutar el gestor de errores interno de PHP */
    
return true;

Este código está dentro de funciones.php y lo incluyo a dicho archivo dentro de listar.php
Este es el código de listar.php

Código PHP:
error_reporting(0);
define'parentFile' );
include (
"includes/funciones.php");
        
$gestor_errores set_error_handler("ManejadorErrores");
    
$resultado mostrar_mensaje();
print (
$resultado); 
La funcion mostrar_mensajes solo muestra un par de mensajes de una bbdd.
Gracias desde ya por tu ayuda.

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #6 (permalink)  
Antiguo 10/11/2008, 10:26
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Crear una funcion manejadora de errores propia

Solo por curiosidad, armandoweb. ¿Para qué deseas hacer tal cosa? ¿No sería más deseable que la aplicación no produzca ningún error antes que ocultarlos o disfrazarlos?
  #7 (permalink)  
Antiguo 10/11/2008, 10:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Crear una funcion manejadora de errores propia

Pero tu función se llama miGestorErrores y no ManejadorErrores .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 10/11/2008, 10:30
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
David:

La funcion miGestorErrores la copie y pegue desde php.net
Yo en mi ejemplo en mi pc tengo bien determinada la función y se llama ManejadorErrores.

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]

Última edición por armandoweb; 11/11/2008 a las 02:30
  #9 (permalink)  
Antiguo 11/11/2008, 02:31
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Crear una funcion manejadora de errores propia

Amigos:

Alguien puede ayudarme en como utilizar correctamente set_error_handler()??
Desde ya muchas gracias.

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #10 (permalink)  
Antiguo 11/11/2008, 03:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear una funcion manejadora de errores propia

justo siguiendo el ejemplo de la pagina de PHP es como funciona, no necesitas saber mas...

con respecto al nivel de E_FATAL y E_STRICT no están al alcance de ser tratados, vamos... es justo hacer un manejador de errores a medida.. para errores comunes, del usuario....

pero eso de atentar contra el sistema mismo esta mal... por eso ni aun, el manejador personaliza funciona... así que por favor, ni siquiera lo intentes..

se entiende?

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 11/11/2008, 05:44
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Crear una funcion manejadora de errores propia

Entiendo tu explicacion.
Lo que por ejemplo se me ocurre que podría hacer con un manejador personalizado es enviar un email al administrador del sitio cuando el server donde esta alojado su sitio este caido....
Como puedo hacer algo asi??

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #12 (permalink)  
Antiguo 11/11/2008, 05:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Crear una funcion manejadora de errores propia

A ver, con un poco de lógica deduciría que si el server está caído la página PHP no se va ejectutar y por lo tanto no podrá mandar ningún e-mail .

Hay aplicaciones que podría instalar el administrador para saber si su página está caída, pero definitvamente no en el server.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:59.