throws Palabra clave en Java
La palabra clave throws
en Java se utiliza en las declaraciones de métodos para especificar que el método puede lanzar una o varias excepciones. Proporciona una forma de que los métodos señalen que pueden encontrarse con condiciones excepcionales que no están equipados para manejar.
Utilización
La palabra clave throws
se coloca en la firma del método después de la lista de parámetros y antes del cuerpo del método. Le sigue una lista separada por comas de las clases de excepción que puede lanzar el método.
Syntax
returnType methodName(parameters) throws ExceptionType1, ExceptionType2 {
// method body
}
returnType
: El tipo de retorno del método.methodName
: El nombre del método.parameters
: Los parámetros del método.ExceptionType1, ExceptionType2
: Las excepciones que puede lanzar el método.
Ejemplos
Ejemplo 1: Excepción ú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();
}
En este ejemplo, el método readFile
declara que puede lanzar un IOException
. Esto indica que el método puede encontrarse con un error de entrada/salida que no puede manejar internamente.
Ejemplo 2: Excepciones múltiples
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();
}
Aquí, el método processFile
declara que puede lanzar tanto IOException
como FileNotFoundException
. Esto informa a la persona que llama de que el método puede encontrarse con cualquiera de estas excepciones.
Ejemplo 3: Excepción 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.");
}
En este ejemplo, se crea una excepción personalizada CustomException
. El método validateAge
declara que puede lanzar esta excepción personalizada si la edad es inferior a 18 años.
Consejos y buenas prácticas
- Declarar Excepciones Específicas: Declara las excepciones más específicas posibles en lugar de utilizar una clase genérica
Exception
. Esto hace que el código sea más legible y fácil de mantener.public void method() throws IOException, SQLException { // method body }
- Excepciones de documentos: Documenta siempre las excepciones que puede lanzar un método mediante comentarios Javadoc. Esto ayuda a otros desarrolladores a comprender los riesgos potenciales y a manejarlos adecuadamente.
/** * 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 }
- Utiliza
throws
juiciosamente: Utiliza la palabra clavethrows
sólo cuando el método no pueda manejar la excepción internamente. Si es posible, maneja las excepciones dentro del método para proporcionar una aplicación más robusta y 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 excepciones: Al propagar excepciones, asegúrate de que el método que las llama es capaz de manejarlas o de propagarlas más arriba en la pila de llamadas.