Wpis z mikrobloga

public static void main(String[] args) {
try {
throw new IOException();
} catch (Error | Exception ex) {
handle(ex);
}
}

public static void handle(Exception ex) {
System.out.println("exception");
}

public static void handle(IOException ex) {
System.out.println("ioexception");
}

public static void handle(Throwable t) {
System.out.println("throwable");
}

#java #javapuzzle

Co wypisze

  • Błąd kompilacji 19.4% (7)
  • exception 27.8% (10)
  • ioexception 27.8% (10)
  • throwable 25.0% (9)

Oddanych głosów: 36

  • 12
@Mike-Wazowski: W multi-catch czyli tam gdzie podajemy w klauzuli catch więcej niż jeden typ wyjątku oddzielony znakiem | zmienna wyjątku jest typu, który jest najbliższą w hierarchii klasą bazową wspólną dla wszystkich wskazanych tam typów. Dla przykładu z ankiety dla Error i Exception najbliższą klasą bazową jest Throwable czyli ex jest referencją typu Throwable.
Dalej mamy przeładowaną metodę handle i w grę wchodzi dopasowanie przeładowanej wersji metody do wywołania.