Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2012, 20:38
rodtux
 
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.