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: 18 años, 7 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_INCOMPLETE2;

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.