Foros del Web » Programando para Internet » PHP »

Problema con PDOException

Estas en el tema de Problema con PDOException en el foro de PHP en Foros del Web. Hola amigos. Necesito su ayuda, resulta que estoy tratando de pasar como parámetro a un método estático un objeto PDOException (bueno eso creo que es, ...
  #1 (permalink)  
Antiguo 29/09/2012, 20:38
 
Fecha de Ingreso: abril-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 2
Problema con PDOException

Hola amigos.

Necesito su ayuda, resulta que estoy tratando de pasar como parámetro a un método estático un objeto PDOException (bueno eso creo que es, no estoy seguro) pero me arroja el error de que no se puede acceder al método x de un no objeto, aquí el fragmento de mi código:

Código PHP:
try{
     return 
$this->servidorBD->query("SELECT ".$campos." FROM ".$this->tabla.$condicion)->fetch(PDO::FETCH_OBJ);
}catch(
PDOException $err){
    
util::imprimeErr($err);

el método imprimeErr($err) espera un objeto PDOException del que accederá a los métodos getCode(), getLine(), getMessage() y getFile(). para imprimir el error formateado con codigo html para facilitar su vizualizacion.

pero obtengo el error

Call to a member function getLine() on a non-object

lo curioso es que tengo el siguiente codigo en dicho metodo, antes de hacer la llamada a getLine y cualquier otra de las que mencione anteriormente, para hacer la traza y no hay error ahi, osea si accede al menos a getTrace(), aqui el codigo

Código PHP:
               $traza '<table border="0">';
            foreach (
$e->getTrace() as $a => $b) {
                foreach (
$b as $c => $d) {
                    if (
$c == 'args') {
                        foreach (
$d as $e => $f) {
                            
$traza .= '<tr><td><b>'.strval($a).'#</b></td><td align="right"><u>args:</u></td> <td><u>'.$e.'</u>:</td><td><i>'.$f.'</i></td></tr>';
                        }
                    } else {
                        
$traza .= '<tr><td><b>'.strval($a).'#</b></td><td align="right"><u>'.$c.'</u>:</td><td></td><td><i>'.$d.'</i></td>';
                    }
                }
            }
            
$traza .= '</table>'
En el codigo anterior ahi no tengo error si no posteriormente en donde intento llamar a getFile(),getCode(),getMessage() etc.

aqui el codigo donde ocurren los errores

Código PHP:
die('<br /><br /><font face="Verdana"><center>'.
                    
'<fieldset style="width: 66%; border: 4px solid black;">'.
                    
'<legend><b>[</b>PHP PDO Error '.strval($cod).
                    
'<b>]</b></legend> <table border="0"><tr><td align="right"><b><u>Mensaje:</u></b></td><td><i>'.
                    
$men '</i></td></tr><tr><td align="right"><b><u>Codigo:</u></b></td><td><i>'.
                    
strval($cod) . '</i></td></tr><tr><td align="right"><b><u>Archivo:</u></b></td><td><i>'.
                    
$file '</i></td></tr><tr><td align="right"><b><u>Linea:</u></b></td><td><i>'.
                    
strval($e->getLine()).'</i></td></tr><tr><td align="right"><b><u>Traza:</u></b></td><td><br /><br />'.
                    
$traza '</td></tr></table></fieldset></center></font>'); 
como pueden ver ya sustituí todos por variables que paso directamente como parámetros, excepto el de $e->getLine() para demostrar como ocurre el error, de forma que quien llama a este método ahora esta así:

Código PHP:
util::imprimeErr($er$this->config->sacar('Produccion'), $er->getCode(), $er->getMessage(), $er->getFile(), $er->getLine()); 
Pero no me gusta, se supone que debería poder hacer lo que pretendía originalmente.

alguna idea?

Gracias de antemano amigos.

Saludos.
  #2 (permalink)  
Antiguo 30/09/2012, 09:51
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problema con PDOException

puedes mostrarnos la implementación del método util::imprimeErr, porque el problema no se ve en como capturas la excepción sino lo mas seguro en como la implementas, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
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 03:49.