A partir de la versión 5 se introdujo en PHP un modelo de excepciones similar al existente en otros lenguajes de programación:
- El código susceptible de producir algún error se introduce en un bloque
try
. - Cuando se produce algún error, se lanza una excepción utilizando la instrucción
throw
. - Después del bloque
try
debe haber como mínimo un bloquecatch
encargado de procesar el error. - Si una vez acabado el bloque
try
no se ha lanzado ninguna excepción, se continúa con la ejecución en la línea siguiente al bloque o bloquescatch
.
Por ejemplo, para lanzar una excepción cuando se produce una división por cero podrías hacer:
try {
if ($divisor == 0)
throw new Exception("División por cero.");
$resultado = $dividendo / $divisor;
}catch (Exception $e) {
echo "Se ha producido el siguiente error: ".$e->getMessage();
}
PHP ofrece una clase base Exception
para utilizar como manejador (handler) de excepciones. Para lanzar una excepción no es necesario indicar ningún parámetro, aunque de forma opcional se puede pasar un mensaje de error (como en el ejemplo anterior) y también un código de error.
Entre los métodos que puedes usar con los objetos de la clase Exception
están:
getMessage
. Devuelve el mensaje, en caso de que se haya puesto alguno.getCode
. Devuelve el código de error si existe.
Las funciones internas de PHP y muchas extensiones como MySQLi usan el sistema de errores visto anteriormente. Solo las extensiones más modernas orientadas a objetos, como es el caso de PDO, utilizan este modelo de excepciones. En este caso, lo más común es que la extensión defina sus propios manejadores de errores heredando de la clase Exception
(veremos cómo utilizar la herencia en una unidad posterior).