Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/05/2006, 17:25
Guish
 
Fecha de Ingreso: abril-2006
Mensajes: 62
Antigüedad: 18 años
Puntos: 0
set_error_handler y exceptions

Tengo una función que procesa un archivo de texto y otra porción de código que la llama varias veces, para procesar una lista de archivos.

La función esta escrita al estilo if(!instruccion) {return false} para que los archivos de texto que generen algún error simplemente no sean procesados y se listen al final del proceso.

Hasta ahí todo bien, pero cómo no me tengo mucha confianza me gustaría que ante cualquier error que encuentre PHP dentro de la función, la aborte, es decir devuelva false y pueda seguirse con el resto de los archivos.

Bueno, no encontré una manera elegante de hacerlo. Si utilizo set_error_handler no sé como hacer para que termine la ejecución de la función.

Encontré una forma de lograr el comportamiento deseado combinando set_error_handler y exceptions de PHP5, pero parece una abominación .

Este es un ejemplo reducido de cómo quedaría para hacerlo más sencillo.
Código PHP:
<?php

function venderpescado($tipo_pescado) {
    
set_error_handler("vender_pescado_error_handler");
    
$pescados = array("atún" => 3"merluza" => 2"pejerrey" => 10);
    try {
        echo 
"Se vendió ".$pescados[$tipo_pescado] . " de $tipo_pescado\n";
    } catch (
Exception $e) {
        echo 
$e->getMessage().$tipo_pescado"\n";
    }
}

venderpescado("merluza");
//genera un error de "Undefined index" dentro de la función:
venderpescado("surubí");
venderpescado("atún");

function 
vender_pescado_error_handler($errno$errmsg) {
    throw new 
Exception("No se pudo vender el pescado ");
}
?>
Me gustaría saber si alguien conoce una mejor forma de tratar con esto.

Muchas Gracias
__________________
Guish