El método orElseThrow
es una forma eficiente de manejar valores nulos o ausentes en Java, especialmente cuando se trabaja con la clase Optional
. En aplicaciones Spring Boot, es muy común utilizarlo para lanzar excepciones si no se encuentra un recurso o entidad en la base de datos.
orElseThrow
en Spring Boot
El método orElseThrow
se utiliza en instancias de Optional
para devolver un valor si está presente o lanzar una excepción personalizada si el valor es nulo. Esto es particularmente útil cuando, por ejemplo, se buscan entidades en la base de datos utilizando repositorios que pueden devolver valores nulos, como findById()
.
Optional<Entity> entity = entityRepository.findById(id);
Entity foundEntity = entity.orElseThrow(() -> new ResourceNotFoundException("Entidad no encontrada"));
En este caso, si la entidad no se encuentra, el método orElseThrow
lanza una excepción, que puede ser manejada por un controlador de excepciones global en la aplicación Spring Boot.
orElseThrow
Supongamos que tenemos un servicio que busca una entidad por su ID. Utilizamos orElseThrow
para asegurarnos de que, si no se encuentra, se lanza una excepción personalizada.
public Entity obtenerEntidadPorId(Long id) {
return entityRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Entidad con ID " + id + " no encontrada"));
}
Puedes combinar el uso de orElseThrow
con un manejador global de excepciones para devolver respuestas HTTP adecuadas, como un código 404.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<?> manejarRecursoNoEncontrado(ResourceNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
}
Para más información, puedes consultar la documentación oficial de Spring.
Jorge García
Fullstack developer