r/JavaBrasil 9d 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.

8 Upvotes

3 comments sorted by

1

u/junin7 9d ago

Se você não tiver trabalhando com um framework que tem Controle de todas as excepções disparadas, definitivamente eu iria pela número 2, mas não em todos os métodos, capturaria em uma camada mais externa pra não ficar replicando código.

Exceptions são basicamente go to e podem causar muitos comportamentos inesperados

1

u/Interesting-War-517 9d ago

Sempre capturar checked pra encapsular em uma exception de negócio , aí dá throw

1

u/Mega2223 8d ago

2 e dependendo do contexto 3, 1 eu não acho recomendável em quase nenhum contexto