Qual a diferença entre throw e throws?
Em Java, os comandos throw
e throws
são utilizados no tratamento de exceções, mas possuem funções distintas. Entender essa diferença é essencial para um código seguro e bem estruturado.
1. O que é throw
?
O throw
é usado para lançar exceções manualmente durante a execução do programa.
public class ExemploThrow {
public static void verificarIdade(int idade) {
if (idade < 18) {
throw new IllegalArgumentException("Idade mínima é 18 anos");
}
System.out.println("Acesso permitido");
}
public static void main(String[] args) {
verificarIdade(16);
}
}
No código acima,
throw
lança umaIllegalArgumentException
caso a idade seja menor que 18.
2. O que é throws
?
O throws
declara que um método pode gerar uma ou mais exceções, transferindo a responsabilidade do tratamento para quem o chama.
import java.io.*;
public class ExemploThrows {
public static void lerArquivo() throws IOException {
FileReader arquivo = new FileReader("arquivo.txt");
}
public static void main(String[] args) {
try {
lerArquivo();
} catch (IOException e) {
System.out.println("Erro ao acessar o arquivo: " + e.getMessage());
}
}
}
O
throws
indica quelerArquivo()
pode gerar umaIOException
, exigindo que a exceção seja tratada no método chamador (main
).
3. Comparação entre throw
e throws
Característica | throw |
throws |
---|---|---|
Uso | Lança uma exceção | Declara que um método pode lançar exceções |
Local de Aplicação | Dentro do corpo do método | Na assinatura do método |
Exemplo | throw new Exception("Erro!"); |
public void metodo() throws Exception |
Obrigação de Captura | Não exige tratamento imediato | Exige tratamento pelo chamador |
Conclusão
O throw
é utilizado para lançar exceções específicas, enquanto throws
indica que um método pode gerar exceções. O uso correto desses conceitos melhora a legibilidade do código e garante um tratamento eficiente de erros.
Quando utilizar throw e throws no tratamento de exceções em Java?
O uso correto de throw
e throws
é essencial para aplicações que lidam com validação de dados e manipulação de arquivos. Em sistemas de pagamento, por exemplo, podemos lançar exceções (throw
) para evitar transações inválidas, enquanto usamos throws
para indicar que um método de processamento pode gerar erros e deve ser tratado pelo chamador.
Algumas aplicações:
- Validação de entrada de usuários
- Tratamento de erros em serviços de APIs
- Controle de exceções em operações bancárias
- Manipulação segura de arquivos e bancos de dados
Dicas para quem está começando
- Use
throw
para lançar exceções específicas dentro do código - Utilize
throws
para indicar que um método pode gerar exceções - Combine
throws
comtry-catch
para capturar exceções corretamente - Evite usar
throws
em excesso sem um tratamento adequado - Prefira lançar exceções específicas em vez de
Exception
genérica
Contribuições de Rodrigo Farias