Panoramica

Le eccezioni Java si dividono in due categorie principali: eccezioni controllate e eccezioni non controllate. In questo articolo, forniremo alcuni esempi di codice su come usarli.

Eccezioni controllate

In generale, le eccezioni controllate rappresentano errori al di fuori del controllo del programma. Ad esempio, il costruttore di FileInputStream genera FileNotFoundException se il file di input non esiste.

Java verifica le eccezioni controllate in fase di compilazione.,

Pertanto, dovremmo usare la parola chiave throws per dichiarare un’eccezione controllata:

Possiamo anche usare un blocco try-catch per gestire un’eccezione controllata:

Alcune eccezioni controllate comuni in Java sono IOException, SQLException e ParseException.

La classe Exception è la superclasse delle eccezioni controllate. Pertanto, possiamo creare un’eccezione controllata personalizzata estendendo Exception:

public class IncorrectFileNameException extends Exception { public IncorrectFileNameException(String errorMessage) { super(errorMessage); }}

Eccezioni deselezionate

Se un programma genera un’eccezione deselezionata, riflette un errore all’interno della logica del programma., Ad esempio, se dividiamo un numero per 0, Java genererà ArithmeticException:

private static void divideByZero() { int numerator = 1; int denominator = 0; int result = numerator / denominator;}

Java non verifica le eccezioni non controllate in fase di compilazione. Furtheremore, non dobbiamo dichiarare eccezioni non controllate in un metodo con la parola chiave throws. E sebbene il codice sopra non abbia errori durante la compilazione, genererà ArithmeticException in fase di runtime.

Alcune eccezioni non controllate comuni in Java sono NullPointerException, ArrayIndexOutOfBoundsException e IllegalArgumentException.,

La classe RuntimeException è la superclasse di tutte le eccezioni non controllate. Pertanto, possiamo creare un’eccezione personalizzata non controllata estendendo RuntimeException:

public class NullOrEmptyException extends RuntimeException { public NullOrEmptyException(String errorMessage) { super(errorMessage); }}

Quando utilizzare eccezioni controllate ed eccezioni non controllate

È buona norma utilizzare le eccezioni in Java in modo da poter separare il codice di gestione degli errori dal codice normale. Tuttavia, dobbiamo decidere quale tipo di eccezione lanciare., La documentazione di Oracle Java fornisce indicazioni su quando utilizzare le eccezioni controllate e le eccezioni non controllate:

“Se un client può ragionevolmente aspettarsi di recuperare da un’eccezione, renderlo un’eccezione controllata. Se un client non può fare nulla per recuperare dall’eccezione, renderlo un’eccezione non selezionata.”

Ad esempio, prima di aprire un file, possiamo prima convalidare il nome del file di input. Se il nome del file di input dell’utente non è valido, possiamo generare un’eccezione selezionata personalizzata:

if (!isCorrectFileName(fileName)) { throw new IncorrectFileNameException("Incorrect filename : " + fileName );}

In questo modo, possiamo recuperare il sistema accettando un altro nome del file di input dell’utente., Tuttavia, se il nome del file di input è un puntatore nullo o è una stringa vuota, significa che abbiamo alcuni errori nel codice. In questo caso, dovremmo lanciare un’eccezione non controllata:

if (fileName == null || fileName.isEmpty()) { throw new NullOrEmptyException("The filename is null or empty.");}

Conclusione

In questo articolo, abbiamo discusso la differenza tra eccezioni controllate e non controllate. Abbiamo anche fornito alcuni esempi di codice per mostrare quando utilizzare eccezioni controllate o deselezionate.

Come sempre, tutto il codice trovato in questo articolo può essere trovato su GitHub.,

Inizia con Spring 5 e Spring Boot 2, attraverso il corso Learn Spring:

>>SCOPRI IL CORSO