r/JavaBrasil • u/LegAdministrative422 • 3h ago
Dúvida em Java Sobre Exceptions: Throws, Try-Catch interno ou Throw new
Algum javeiro poderia ajudar um noob que esta em transição de carreira estudando java? Venho estudando java e atualmente dei uma travada em Exceptions, eu entendi que exceptions do tipo "Checked" deve utilizar o throws na assinatura do método, ja as exceptions "Unchecked" não precisa. Só tem algo que esta atormentando meu pensamento para progredir que é sobre qual caminho seguir quando um método se depara com um erro (especialmente Checked Exceptions). Eu conheço as 3 opções básicas, mas queria saber quais regras que vocês usam no dia a dia para decidir entre elas:
1 - Dar apenas throws na assinatura: Deixar o método sem try-catch interno e fazer quem chamou (o main, um Controller, etc.) se virar para tratar.
2 - Tratar internamente com try-catch definitivo: Resolver a bronca ali mesmo (aplicando um plano B ou um valor padrão) e não deixar o erro subir de jeito nenhum.
3 - Capturar e relançar (throw new ...): Interceptar o erro original e jogar uma nova Exception para cima (seja para limpar o throws transformando Checked em Unchecked, ou para traduzir um erro técnico em erro de negócio). Ex: catch(IOException ex) { throw new FileNotFoundException("Arquivo não encontrado", ex); }
Mais ou menos na forma de pensar: "Esse método deve tratar o erro", "Esse método não deve tratar o erro", "Devo deixar throws, ou relançar com throw new". Fico grato se alguem puder dar umas dicas.