ProgramaciónDesarrollador Backend Java

¿Qué son las excepciones (exceptions) en Java? Explique la diferencia entre excepciones verificadas y no verificadas y cuándo usar cada categoría.

Supere entrevistas con el asistente de IA Hintsage

Respuesta

Las excepciones (exceptions) son un mecanismo de manejo de errores en Java. Cada objeto lanzado es una clase derivada de Throwable. Hay dos categorías principales:

  • Excepciones verificadas (descendientes de Exception, excepto RuntimeException): deben ser manejadas explícitamente o declaradas en la firma del método a través de throws.
  • Excepciones no verificadas (descendientes de RuntimeException): no requieren manejo explícito, pueden ocurrir en cualquier lugar (por ejemplo, NullPointerException).

¿Cuándo usar?

  • Verificadas — para errores esperados que se pueden manejar (por ejemplo, errores de archivo, errores de red).
  • No verificadas — para errores que indican defectos en el código (por ejemplo, índice de array incorrecto).
Ejemplo de código
public void readFile(String path) throws IOException { // Excepción verificada — requiere manejo Files.readAllLines(Paths.get(path)); } public void divide(int a, int b) { int c = a / b; // No verificada — ArithmeticException }

Pregunta capciosa

¿Puede un método que no declara throws lanzar una excepción verificada?

Respuesta: No, el compilador no permitirá lanzar una excepción verificada sin declararla en la firma del método (throws). Pero una excepción no verificada puede ser lanzada sin ninguna advertencia.

void foo() { throw new IOException(); // Error de compilación }

Ejemplos de errores reales por desconocer los detalles del tema


Historia

En un banco en línea, el cliente decidió ignorar el manejo de SQLExceptions, usando envolturas no verificadas. Debido a esto, al actualizar el controlador, errores invisibles llevaron a la desincronización de datos.


Historia

En una aplicación de registro, el archivo de registro permanecía bloqueado debido a una excepción verificada no manejada (FileNotFoundException), que se "perdió" en la cadena de llamadas, el error no se manejó a tiempo, y la aplicación no pudo seguir escribiendo en los registros.


Historia

En una plataforma comercial, el equipo implementó un catch global (Throwable) para "nunca caer". Como resultado, las excepciones críticas no verificadas se enmascararon — la aplicación continuó funcionando en un estado inconsistente, lo que llevó a errores complejos y pérdida de datos.