Throwing

Gegevenstypen en uitzonderingen in Java

Jim White

Java Developer

Afhandelingsopties

  • Checked exceptions moeten worden "afgehandeld"
    • "Afhandelen" van runtime-exceptions is optioneel
  • Twee manieren om te "handelen"
    • Gebruik try/catch om de Exception op te vangen en het probleem op te lossen
    • "Gooi" de exception
  • Try/catch is de voorkeursmanier om een exception af te handelen
    • Niet altijd mogelijk; soms beter om afhandeling te centraliseren
Gegevenstypen en uitzonderingen in Java

Keyword throws

  • Gebruik throws op elke methode om de exception terug te geven aan de aanroeper
    • In plaats van de exception in de methode af te handelen
    • Dit heet "een exception gooien" of "de bal doorspelen"
    • Je schuift de verantwoordelijkheid voor afhandeling door naar de aanroeper
  • Gebruik een kommagescheiden lijst met exceptiontypes na throws
    • Geeft aan welke exceptions de aanroepende methode kan verwachten
public static void someMethod() throws IndexOutOfBoundsException, 
NegativeArraySizeException, NullPointerException {
  // method code
}
Gegevenstypen en uitzonderingen in Java
Voorbeeld van throws

Normale try-catch om een Exception af te handelen

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 om een Exception af te handelen

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);
}
Gegevenstypen en uitzonderingen in Java

Wanneer gebruik je throws

  • "De bal doorspelen" of een exception gooien vermijden we bij voorkeur
    • Beter is meestal: exceptions met try/catch afvangen waar ze ontstaan
  • Redenen om te gooien in plaats van try/catch:
    • De methode waar het gebeurt weet mogelijk niet hoe te herstellen
    • Centraliseren om dubbel try/catch-code te verminderen

Een exception gooien wordt vaak gebruikt met custom exceptions

1 Photo from https://unsplash.com/@philipparosetite
Gegevenstypen en uitzonderingen in Java

Catch en opnieuw gooien

  • Een Exception kan worden "opnieuw gegooid"
    • Een aanroepende methode gebruikt ook throws in plaats van try/catch
  • Opnieuw gooien vanuit main stopt de applicatie

Exceptions kunnen opnieuw naar aanroepende methoden worden gegooid

Gegevenstypen en uitzonderingen in Java

Voorbeeld: opnieuw gooien

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);
    }
}
Gegevenstypen en uitzonderingen in Java

Laten we oefenen!

Gegevenstypen en uitzonderingen in Java

Preparing Video For Download...