Volver a la página principal
sábado 12 octubre 2024
33

Cómo utilizar orElseThrow en Spring Boot

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.

Uso de 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.

Ejemplos de uso

Manejo de una entidad con 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"));
}

Ejemplo con controlador global de excepciones

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());
    }
}

Referencia oficial

Para más información, puedes consultar la documentación oficial de Spring.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer