Oi Raquel, tudo bem?
Sua pergunta é muito relevante, não se preocupe!
Vou tentar explicar de uma maneira simples.
Quando usamos System.out.println(e)
, estamos apenas imprimindo a exceção no console. Isso significa que, se ocorrer um erro, o programa continuará a execução normalmente após imprimir a exceção. No entanto, em muitos casos, queremos que o programa pare de executar se ocorrer um erro, pois o erro pode causar comportamentos inesperados mais adiante.
É aí que entra o RuntimeException(e)
. Quando lançamos uma RuntimeException
, estamos dizendo ao programa para parar de executar porque algo inesperado aconteceu. RuntimeException
é uma classe de exceção não verificada, o que significa que o compilador não nos obriga a lidar com ela. Quando lançamos uma RuntimeException
, ela se propaga para cima na pilha de chamadas de método até encontrar um bloco catch
que possa lidar com ela, ou até parar o programa se nenhum desses blocos for encontrado.
Ao usar throw new RuntimeException(e)
, está dizendo: "Se uma SQLException ocorrer, eu quero que você pare tudo e lance esta RuntimeException".
Espero que isso esclareça sua dúvida.
Um abraço e bons estudos.