4 visitas

Cuándo lanzar excepciones en PHP (y cuándo no): Guía práctica para programadores

¿Te preguntaste alguna vez si deberías lanzar una excepción o simplemente devolver un valor nulo? En este post te comparto una tabla clara y ejemplos reales para que sepas cuándo usar excepciones en tus aplicaciones PHP… ¡y cuándo no!

¿Excepción o no excepción? Esa es la cuestión

En PHP (y en cualquier lenguaje moderno), las excepciones son una herramienta poderosa para manejar errores. Pero, ¿cuándo corresponde usarlas y cuándo es mejor evitarlas? Si alguna vez te encontraste dudando, este post es para vos.

Vamos directo al grano:
Te dejo una tabla con casos típicos y una respuesta clara: SI (lanza excepción) o NO (no lances excepción).

Caso ¿Lanzar excepción? Explicación breve
Error de conexión a la base de datos SI La aplicación no puede continuar sin la base de datos.
Archivo de configuración faltante requerido para iniciar la app SI Es esencial para el funcionamiento, debe detenerse.
Intentar dividir por cero SI Es un error matemático, nunca debe permitirse.
Acceso a un índice inexistente en un array SI Es un error de programación, debe corregirse.
Error de autenticación por token inválido SI El usuario no está autorizado, se debe notificar.
Violación de restricción de clave única en la base de datos SI Es un error de integridad, debe manejarse como excepción.
Llamada a un método inexistente en un objeto SI Error de programación, debe corregirse.
Parámetro obligatorio ausente en una función SI No se puede continuar sin el parámetro.
Archivo subido supera el tamaño máximo permitido SI No se puede procesar el archivo, se debe notificar.
Error de sintaxis en una consulta SQL SI Error de programación, debe corregirse.
Consulta a la base de datos retorna lista vacía NO Es un resultado válido, simplemente no hay datos.
Usuario no encontrado al buscar por ID NO Puede ser un caso esperado, se retorna null o similar.
Campo opcional no presente en la petición NO Es opcional, no es un error.
El usuario intenta eliminar un registro que ya no existe NO Operación idempotente, no es error.
El usuario solicita una página vacía en paginación NO Se retorna lista vacía, no es error.
El usuario sube un archivo con extensión no permitida NO Se rechaza la carga, pero no es excepción, solo respuesta.
El usuario intenta acceder a un recurso sin permisos suficientes SI Es un error de autorización, debe lanzarse excepción.
El usuario intenta modificar un recurso bloqueado SI No está permitido, debe lanzarse excepción.
El sistema recibe un tipo de dato incorrecto en una API pública SI Error de validación, debe lanzarse excepción.
El usuario solicita un recurso con un identificador mal formado SI Error de validación, debe lanzarse excepción.

¿Por qué es importante?

Lanzar excepciones en los casos correctos te ayuda a:

  • Mantener tu código limpio y predecible.
  • Evitar bugs difíciles de rastrear.
  • Mejorar la experiencia del usuario (sí, ¡aunque no lo vean!).

Pero abusar de las excepciones (o usarlas donde no corresponde) puede hacer tu código más difícil de mantener y menos eficiente.


Ejemplo práctico en PHP

function getUserById(int $id): ?User {
    $user = UserRepository::find($id);
    if (!$user) {
        // NO lanzamos excepción, simplemente devolvemos null
        return null;
    }
    return $user;
}

function dividir($a, $b) {
    if ($b === 0) {
        throw new Exception("No se puede dividir por cero");
    }
    return $a / $b;
}

Resumiendo

  • Excepción: Cuando el flujo normal de la aplicación no puede continuar o hay un error grave.
  • NO excepción: Cuando el caso es esperado y la app puede seguir funcionando normalmente.

¿Te sirvió la tabla? ¿Agregarías algún caso más? ¡Comentá abajo y compartí tu experiencia usando excepciones en PHP!

Cuándo lanzar excepciones en PHP (y cuándo no): Guía práctica para programadores
15 May 2025

Me dedico a crear soluciones web eficientes y a compartir mi conocimiento con la comunidad de desarrolladores.

Alejandro Leone
Backend Developer