Lanzar

Tipos de datos y excepciones en Java

Jim White

Java Developer

Opciones de gestión

  • Las excepciones comprobadas requieren «gestión»
    • «Gestionar» las excepciones en tiempo de ejecución es opcional
  • Dos opciones para «gestionar»
    • Usa try y catch para capturar la Exception y escribir código que resuelva el problema
    • «Lanzar» la excepción
  • Try/catch es la forma preferida de gestionar una excepción
    • No siempre es posible y a veces conviene centralizar la gestión de excepciones
Tipos de datos y excepciones en Java

Palabra clave throws

  • Usa throws en cualquier método para devolver la excepción al método llamador
    • En lugar de gestionarla en el propio método
    • Se llama «lanzar una excepción» o «pasar la pelota»
    • Pasar al llamador la responsabilidad de gestionar la excepción
  • Usa una lista separada por comas de tipos de excepción después de throws
    • Indica qué tipos de excepción podría anticipar el método llamador
public static void someMethod() throws IndexOutOfBoundsException, 
NegativeArraySizeException, NullPointerException {
  // method code
}
Tipos de datos y excepciones en Java
Ejemplo de throws

Try-catch normal para gestionar una Exception

public static void main(String[] args) {
  someMethod();
}
public static void someMethod(){
  try {
    ArrayList<String> games
      = new ArrayList<String>();
    games.add("Monopoly");
    games.add("Chess");
    games.get(3);
  } catch (IndexOutOfBoundsException e) {
    System.out.println(
   "Oops - trying to get non-existent item");
  }
}

Throws para gestionar una Exception

public static void main(String[] args) {
  try {
    someMethod();
  } catch (IndexOutOfBoundsException e) {
    System.out.println(
   "someMethod tried to get non-existent item");
  }
}
public static void someMethod()
      throws IndexOutOfBoundsException {
  ArrayList<String> games
    = new ArrayList<String>();
  games.add("Monopoly");
  games.add("Chess");
  games.get(3);
}
Tipos de datos y excepciones en Java

Cuándo usar throws

  • «Pasar la pelota» o lanzar una excepción es algo que intentamos evitar
    • Lo habitual es usar try-catch donde ocurre la excepción
  • Motivos para lanzar en lugar de usar try-catch:
    • El método donde ocurre quizá no sepa cómo recuperarse
    • Centralizar la gestión para reducir código try/catch redundante

Lanzar una excepción suele usarse con excepciones personalizadas

1 Photo from https://unsplash.com/@philipparosetite
Tipos de datos y excepciones en Java

Capturar y relanzar

  • Se puede «volver a lanzar» una Exception
    • Un método llamador también usa throws en lugar de try/catch
  • Volver a lanzar desde main hará que la aplicación se detenga

Las excepciones pueden relanzarse a los métodos llamadores

Tipos de datos y excepciones en Java

Ejemplo de relanzar

public class RethrowExample {
    public static void main(String[] args) {
        try {
            method1(0);
        } catch (ArithmeticException e) {
            System.out.println("Oops - tried a bad quotient");
        }
    }
    public static void method1(int divisor) throws ArithmeticException {
        method2(divisor);
    }
    public static void method2 (int divisor) throws ArithmeticException {
        int z = 5/divisor;
        System.out.println(z);
    }
}
Tipos de datos y excepciones en Java

¡Vamos a practicar!

Tipos de datos y excepciones en Java

Preparing Video For Download...