Lancio

Tipi di dati ed eccezioni in Java

Jim White

Java Developer

Opzioni di gestione

  • Le checked exception richiedono una "gestione"
    • "Gestire" le runtime exception è opzionale
  • Due opzioni per la "gestione"
    • Usa try/catch per catturare l'Exception e scrivere il codice di recupero
    • "Lancia" l'eccezione
  • Try/catch è il modo preferito per gestire un'eccezione
    • Non sempre possibile; a volte meglio consolidare la gestione delle eccezioni
Tipi di dati ed eccezioni in Java

Parola chiave throws

  • Usa throws su qualsiasi metodo per passare l'eccezione al metodo chiamante
    • Invece di gestirla nel metodo
    • Chiamato "lanciare un'eccezione" o "scaricare la responsabilità"
    • Passare la responsabilità della gestione al chiamante
  • Usa un elenco di tipi di eccezione separati da virgole dopo throws
    • Indica quali tipi di eccezioni il chiamante deve prevedere
public static void someMethod() throws IndexOutOfBoundsException, 
NegativeArraySizeException, NullPointerException {
  // method code
}
Tipi di dati ed eccezioni in Java
Esempio di throws

Try/catch normale per gestire un'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 per gestire un'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);
}
Tipi di dati ed eccezioni in Java

Quando usare throws

  • "Scaricare la responsabilità" o lanciare un'eccezione è qualcosa da evitare
    • In genere è meglio fare try/catch dove l'eccezione si verifica
  • Motivi per lanciare invece di usare try/catch:
    • Il metodo dove avviene l'eccezione può non sapere come recuperare
    • Centralizzare la gestione per ridurre codice try/catch ridondante

Lanciare un'eccezione è tipico con eccezioni personalizzate

1 Photo from https://unsplash.com/@philipparosetite
Tipi di dati ed eccezioni in Java

Cattura e rilancia

  • Un'Exception può essere "rilanciata"
    • Un metodo chiamante usa anche throws invece di try/catch
  • Rilanciare da main ferma l'applicazione

Le eccezioni possono essere rilanciate ai metodi chiamanti

Tipi di dati ed eccezioni in Java

Esempio di rilancio

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);
    }
}
Tipi di dati ed eccezioni in Java

Passons à la pratique !

Tipi di dati ed eccezioni in Java

Preparing Video For Download...