Exceção

Estou escrevendo um programa, e preciso lançar uma exceção.
Caso eu faça:

    try {
        physicalPerson = repository.save(physicalPerson);
    } catch (DataIntegrityViolationException error) {
        throw new DataIntegrity("Não foi possível adicioanr um novo cliente", error);
   
    return physicalPerson;
}

Vai tranquilo. Porém caso eu faça:

var physicalPerson = Optional.of(repository.save(physicalPerson)).orElseThrow(
() -> new DataIntegrity("qualquer coisa")).
return physicalPerson

nesse caso eu extendo DataIntegrity de DataIntegrityViolationException
A exceção não é capturada.
Gostaria de entender o porque. Me perdi um pouco aqui.

Oi Rodrigo! Tudo bem?

Na verdade é bem tranquilo utilizar exceptions.

Não existe relação entre a exceção capturada pelo try catch e a nova excessão que você quer arremessar.

O importante é criar um construtor que receba a mensagem e um throwable, de forma que, quando for arremessar a nova exception, você preserve o erro original, para não se perder informação importante para diagnosticar erros no seu programa. Segundo vi no seu código, você está fazendo corretamente.

Rodrigo

1 curtida