Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/02/2008, 08:54
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 20 años, 4 meses
Puntos: 2135
Re: Duda POO en PHP con cierta herencia

Por eso las excepciones si te fijas el segundo parametro es el error code:
Código PHP:
<?php
class Exception
{
    protected 
$message = 'Unknown exception';   // exception message
    
protected $code = 0;                        // user defined exception code
    
protected $file;                            // source filename of exception
    
protected $line;                            // source line of exception

    
function __construct($message = null, $code = 0);

    final function 
getMessage();                // message of exception 
    
final function getCode();                   // code of exception
    
final function getFile();                   // source filename
    
final function getLine();                   // source line
    
final function getTrace();                  // an array of the backtrace()
    
final function getTraceAsString();          // formated string of trace

    /* Overrideable */
    
function __toString();                       // formated string for display
}
?>
Entonces nosotros solo creamos una excepcion para SQL y damos nuestros codigos de error:
Código PHP:
class SQLException extends Exception {
         const 
ERROR_NO_ROWS_UPDATED = 1;
         const 
ERROR_QUERY_INCOMPLETE= 2;
} 
Luego lanzas solo las excepciones:
Código PHP:
if( error_en_query() ) {
        throw new 
SQLException( "Hay un error en el Query $query", SQLException::ERROR_QUERY_INCOMPLETE );
} 
y asi puedes ya cacharlas en otro lugar:
Código PHP:
catch( SQLException $e ) {
       if( 
$e->getCode() == SQLException::ERROR_QUERY_INCOMPLETE ) {
               echo 
"Tienes un error en tu query, verifica que esta bien escrita";
       } else { 
// es otro error, podemos checar o guardar
               
Logger::log( $e->getMessage();
               echo 
"Hay un error en la base de datos...";
       }
} 
Saludos.