Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

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++)&nbsp;
        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 clave throws 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.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis