Sobes.tech
Middle

Quali sono i metodi per gestire le eccezioni verificate?

sobes.tech AI

Risposta dell'AI

  • Utilizzare il blocco try-catch: consente di intercettare un'eccezione e gestirla, evitando che il programma termini in modo imprevisto.
  • Dichiarare che un metodo può lanciare un'eccezione, usando la parola chiave throws nella firma del metodo: ciò trasferisce la responsabilità della gestione al codice chiamante.
  • Avvolgere un'eccezione verificabile in una non verificabile: permette di propagare l'eccezione senza gestione esplicita, ma può mascherare un problema reale.

Esempio di utilizzo di try-catch:

// Esempio di utilizzo di try-catch per gestire un'eccezione verificabile
try {
    // Codice che può lanciare un'eccezione verificabile (ad esempio, IOException)
    FileReader file = new FileReader("my_file.txt");
    // Lavoro con il file...
} catch (IOException e) {
    // Gestione dell'eccezione IOException
    e.printStackTrace(); // Visualizza lo stack di chiamate per il debug
    System.err.println("Errore durante il lavoro con il file: " + e.getMessage());
}

Esempio di utilizzo di throws:

// Esempio di utilizzo di throws nella firma del metodo
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    // Lavoro con il file...
}

// Il codice chiamante deve gestire IOException o dichiararla nella propria firma
public void processFile(String filePath) {
    try {
        readFile(filePath);
    } catch (IOException e) {
        System.err.println("Errore durante la lettura del file: " + e.getMessage());
    }
}

Esempio di avvolgimento in un'eccezione non verificabile:

// Esempio di avvolgimento di un'eccezione verificabile in una non verificabile
public void unsafeOperation() {
    try {
        // Codice che può lanciare un'eccezione verificabile
        throw new IOException("Esempio di IOException");
    } catch (IOException e) {
        // Trasformare l'eccezione verificabile in una non verificabile
        throw new RuntimeException("Errore rilevato nell'operazione", e);
    }
}