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 ");
}
?>
Muchas Gracias