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.