¿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!
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. |
Lanzar excepciones en los casos correctos te ayuda a:
Pero abusar de las excepciones (o usarlas donde no corresponde) puede hacer tu código más difícil de mantener y menos eficiente.
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;
}
¿Te sirvió la tabla? ¿Agregarías algún caso más? ¡Comentá abajo y compartí tu experiencia usando excepciones en PHP!
Me dedico a crear soluciones web eficientes y a compartir mi conocimiento con la comunidad de desarrolladores.