Pregunta de entrevista para Desarrollador Java

¿Cómo decides entre una excepción checked y una unchecked, y cómo manejas las excepciones en un servicio?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Usa una excepción checked solo cuando quien llama pueda recuperarse de verdad y quieras que el compilador le obligue a decidir; usa unchecked para errores de programación y para fallos que nadie más arriba puede arreglar. En la práctica, la mayoría del Java moderno se inclina por unchecked, envolviendo fallos de bajo nivel en una excepción de dominio que lleva contexto, manejada una sola vez en una frontera, como un manejador de excepciones que la mapea a una respuesta.

Por qué lo preguntan los entrevistadores

El entrevistador busca criterio y hábitos que arruinan bases de código: capturar Exception y loguearla, tragarse una excepción en un bloque vacío, o envolverlo todo en RuntimeException sin contexto. También quieren oír hablar de una única capa de traducción, porque repartir try catch por la lógica de negocio es lo que vuelve los fallos imposibles de rastrear. Las lambdas y los streams hacen que las excepciones checked resulten genuinamente incómodas, y vale la pena decirlo.

Cómo estructurar tu respuesta

  • Da la prueba de recuperabilidad para elegir entre las dos.
  • Explica el envoltorio con contexto en vez de relanzar causas crudas.
  • Describe el manejo en una sola capa frontera, no en todas partes.
  • Enumera los antipatrones que no aceptas en revisión.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Mi prueba es si quien llama puede hacer algo útil con ello. Un pago rechazado por el proveedor es un resultado de negocio legítimo, así que eso es una excepción checked o, más a menudo, un tipo resultado. Un argumento nulo o una conexión a base de datos fallida no es algo que el código llamante pueda arreglar, así que es unchecked. En servicios uso sobre todo excepciones de dominio unchecked, envolviendo la causa subyacente para que sobreviva la traza y añadiendo los identificadores que voy a querer en el log, como el id del pedido, porque una excepción SQL pelada tres capas más abajo no me dice nada. El manejo ocurre una vez, en una frontera: en Spring eso es un manejador de excepciones que mapea cada excepción de dominio a un código de estado y a un cuerpo de respuesta, así los controladores quedan limpios. Lo que rechazo en revisión es capturar Exception de forma amplia, capturar y loguear y seguir como si nada, y los bloques catch vacíos. También uso try with resources en todas partes en lugar de bloques finally, porque las excepciones suprimidas y los fallos al cerrar se manejan bien y gratis.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cómo lidias con una excepción checked dentro de una lambda de un stream?
  • ¿Cuándo devolverías un tipo resultado en vez de lanzar?
  • ¿Qué contexto adjuntas a una excepción para que sea útil en un log?

Más preguntas para Desarrollador Java

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot