Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/01/2011, 10:51
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Capturar excepcion no funciona

Entonces Gatorv

¿El código completo quedaría asi?

Código PHP:
Ver original
  1. function getFileContents($sFile)
  2. {
  3.     $sContents = @file_get_contents($sFile);
  4.     if ($sContents === false) {
  5.            throw new Exception("Unable to read $sFile");
  6.            // En este momento todo el codigo que venga despues no le ejecuta.
  7.     }
  8.     return $sContents;
  9. }
  10.  
  11. function ParserWebSimple($url,$expresion,$debug=false,$notificaErrores=false){
  12.  
  13.     $error_msg=''; // string que recopila los errores que va encontrando
  14.     getFileContents($url);
  15.     preg_match_all($expresion,$web, $matches);
  16.     $resultado=trim(strip_tags($matches[1][0]));
  17.     if (empty($resultado)){
  18.         $error_msg.='La captura está vacia';
  19.     }
  20.     // Si debug está activado imprime los echo dentro del programa
  21.     // Si notificaErrores esta activado te imprime el string $error_msg
  22.    
  23.     return array($resultado,$error_msg);
  24. }
  25.  
  26. // ------------ MAIN ---------------------------------
  27. $url='http://www.alternate33.es/html/product/Placas_base_Socket_1366/Asus/SABERTOOTH_X58/475921/?tn=HARDWARE&l1=Placas+base&l2=Intel&l3=Socket+1366';
  28. $expresion='|<div id="price" style="position:relative;">(.*?)</div>|is';
  29.  
  30. try {
  31.     $web = ParserWebSimple($url,$expresion,$debug=false,$notificaErrores=false);
  32.     echo "$resultado<br/>";
  33.     echo $error_msg;
  34. } catch (Exception $e) {
  35.       log($e); // Escribe el error en un log para debug
  36.       echo "Lo sentimos se produjo un error al procesar el request. <br/>El error es: " . $e->getMessage();
  37. }


Una pregunta más, supuestamente nunca podrán haber/existir dos excepciones juntas/seguidas no? Ya que cuando hay una excepción automaticamente el programa finaliza y salta al apartado del catch, correcto?

Muchas gracias