3 visitas

Excepciones opcionales en PHP: ¿Lanzo o no lanzo? Casos reales y cómo decidir

¿Te encontraste alguna vez dudando si deberías lanzar una excepción o manejar el caso de otra forma? En este post te traigo una tabla con situaciones donde la decisión depende del contexto, ejemplos en PHP y consejos para que tu código sea más claro y mantenible.

Excepciones opcionales: el “depende” del mundo PHP

No todo es blanco o negro cuando hablamos de excepciones. Hay situaciones donde lanzar una excepción puede ser válido… ¡pero también podrías resolverlo de otra manera! La clave está en el contexto y en la experiencia de usuario que quieras lograr.

Te dejo una tabla con casos típicos donde lanzar una excepción es opcional:

Caso ¿Excepción? Explicación breve
El usuario intenta actualizar un registro que fue modificado por otro Opcional Puede lanzarse excepción (concurrency) o resolver con merge/sobrescribir según la lógica.
Límite de resultados superado en una consulta Opcional Puede devolverse un error o solo truncar la lista y avisar al usuario.
Servicio externo no responde a tiempo Opcional Puede lanzarse excepción o reintentar/retornar valor por defecto.
El usuario intenta realizar una acción fuera de horario permitido Opcional Puede lanzarse excepción o mostrar mensaje amigable sin interrumpir el flujo.
Error al guardar un archivo temporal Opcional Puede lanzarse excepción o intentar guardar en otra ubicación.
El sistema detecta un posible dato duplicado pero no es seguro Opcional Puede lanzar excepción o solo advertir y permitir continuar.
El usuario cancela una operación en curso Opcional Puede lanzarse excepción para abortar o simplemente finalizar el proceso normalmente.
Se detecta un warning en una operación matemática (overflow, underflow) Opcional Puede lanzarse excepción o solo registrar el warning y continuar.
El usuario solicita un recurso que está en proceso de actualización Opcional Puede lanzarse excepción o retornar un estado de "en proceso" sin error.

¿Cómo decidir?

  • ¿El error impide continuar? Si sí, probablemente excepción.
  • ¿El usuario puede tomar una decisión? Quizás mejor un mensaje y no interrumpir.
  • ¿Es un caso raro o frecuente? Si es frecuente, mejor evitar excepciones.

Ejemplo práctico en PHP

function actualizarRegistro($id, $datos, $versionActual) {
    $registro = obtenerRegistro($id);
    if ($registro->version !== $versionActual) {
        // Opción 1: lanzar excepción
        // throw new Exception("El registro fue modificado por otro usuario.");

        // Opción 2: devolver un mensaje de advertencia
        return [
            'status' => 'warning',
            'message' => 'El registro fue modificado, ¿desea sobrescribir?'
        ];
    }
    // Actualizar normalmente...
}

Resumiendo

No todo es lanzar o no lanzar excepciones. Analizá el contexto, pensá en la experiencia de usuario y elegí la mejor opción para tu caso. ¿Te pasó alguna vez? ¡Contá tu experiencia en los comentarios!

Excepciones opcionales en PHP: ¿Lanzo o no lanzo? Casos reales y cómo decidir
15 May 2025

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

Alejandro Leone
Backend Developer