palavra-chave throws em Java
A palavra-chave throws em Java é usada em declarações de métodos para especificar que o método pode lançar uma ou mais exceções. Ele fornece uma maneira de os métodos sinalizarem que podem encontrar condições excepcionais com as quais não estão equipados para lidar.
Uso
A palavra-chave throws é colocada na assinatura do método após a lista de parâmetros e antes do corpo do método. Ele é seguido por uma lista separada por vírgulas de classes de exceção que o método pode lançar.
Sintaxe
returnType methodName(parameters) throws ExceptionType1, ExceptionType2 {
// method body
}
returnType: O tipo de retorno do método.methodName: O nome do método.parameters: Os parâmetros do método.ExceptionType1, ExceptionType2: As exceções que o método pode lançar.
Exemplos
Exemplo 1: Exceção única
public void readFile(String fileName) throws IOException {
FileReader file = new FileReader(fileName);
BufferedReader fileInput = new BufferedReader(file);
// Read file content
for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());
fileInput.close();
}
Neste exemplo, o método readFile declara que você pode lançar um IOException. Isso indica que o método pode encontrar um erro de entrada/saída que não pode ser tratado internamente.
Exemplo 2: Múltiplas exceções
public void processFile(String fileName) throws IOException {
FileReader file = new FileReader(fileName);
BufferedReader fileInput = new BufferedReader(file);
// Read file content
for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());
fileInput.close();
}
Aqui, o método processFile declara que pode lançar tanto IOException quanto FileNotFoundException. Isso informa ao chamador que o método pode encontrar uma dessas exceções.
Exemplo 3: Exceção personalizada
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
public void validateAge(int age) throws CustomException {
if (age < 18) {
throw new CustomException("Age must be 18 or older.");
}
System.out.println("Age is valid.");
}
Neste exemplo, é criada uma exceção personalizada CustomException. O método validateAge declara que pode lançar essa exceção personalizada se a idade for inferior a 18 anos.
Dicas e práticas recomendadas
- Declarar exceções específicas: Declare as exceções mais específicas possíveis em vez de usar uma classe
Exceptiongenérica. Isso torna o código mais legível e de fácil manutenção.public void method() throws IOException, SQLException { // method body } - Exceções de documentos: Sempre documente as exceções que um método pode lançar usando os comentários do Javadoc. Isso ajuda outros desenvolvedores a entender os possíveis riscos e a lidar com eles adequadamente.
/** * Reads a file and prints its content. * * @param fileName the name of the file to read * @throws IOException if an I/O error occurs */ public void readFile(String fileName) throws IOException { // method body } - Use o site
throwscriteriosamente: Use a palavra-chavethrowssomente quando o método não puder tratar a exceção internamente. Se possível, trate as exceções dentro do método para oferecer um aplicativo mais robusto e fácil de usar.public void readFile(String fileName) { try { FileReader file = new FileReader(fileName); BufferedReader fileInput = new BufferedReader(file); // Read file content for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } catch (IOException e) { System.err.println("An error occurred: " + e.getMessage()); } } - Propagar exceções: Ao propagar exceções, certifique-se de que o método de chamada seja capaz de tratá-las ou de propagá-las na pilha de chamadas.