Oi, Tallys! Tudo bem?
No Eclipse, quando adicionamos o try-catch automaticamente, ele inclui o e.printStackTrace(), pois o método printStackTrace() é responsável por imprimir a pilha de chamadas do programa, mostrando o rastro de exceções que ocorreram.
No entanto, o método obterDados possui um retorno do tipo T, e o printStackTrace() não retorna nada. Por isso, o Eclipse mostra um erro indicando que o método deve ter um retorno do tipo T.
Ao substituir o e.printStackTrace() por throw new RuntimeException(e), estamos lançando uma exceção do tipo RuntimeException, que é uma exceção não verificada, ou seja, aquelas que não precisam ser explicitamente declaradas no método ou na cláusula throws. Isso faz com que o método não precise retornar nada, pois a exceção será propagada para quem chamou o método.
É importante lembrar que lançar exceções é uma forma de indicar que algo deu errado no código, e cabe ao programador que utilizará o método decidir como tratar essa exceção.
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓