Menu
Coddy logo textTech

Nozioni di base su try-catch

Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 40 di 59.

I blocchi try-catch in Java vengono utilizzati per gestire le eccezioni (errori) che potrebbero verificarsi durante l’esecuzione del programma. Il codice che potrebbe generare un’eccezione va nel blocco try, mentre il codice per gestire l’errore va nel blocco catch.

Ecco la struttura di base di un blocco try-catch:

try {
   // Codice che potrebbe generare un'eccezione
} catch (ExceptionType e) {
   // Codice per gestire l'eccezione
}

Vediamolo in azione con Integer.parseInt(), che converte una String in un intero:

String text = "abc";
try {
   int number = Integer.parseInt(text);
   System.out.println(number);
} catch (NumberFormatException e) {
   System.out.println("Error: Not a valid number");
}

Dopo aver eseguito il codice qui sopra, l'output è:

Error: Not a valid number

A un singolo try possono seguire diversi blocchi catch, uno per ogni tipo di eccezione. Java esegue il primo blocco il cui tipo corrisponde all'eccezione generata:

try {
   int number = Integer.parseInt(text);
   System.out.println(10 / number);
} catch (NumberFormatException e) {
   System.out.println("Error: Not a valid number");
} catch (ArithmeticException e) {
   System.out.println("Error: Division by zero");
}
challenge icon

Sfida

Facile

Crea un metodo chiamato divideNumbers che accetta tre argomenti:

  1. Una stringa (num1) che rappresenta il primo numero
  2. Una stringa (num2) che rappresenta il secondo numero
  3. Un intero (index) che rappresenta un indice di array

Il metodo dovrebbe:

  1. Creare un array di dimensione 2
  2. Memorizzare all'indice specificato il valore intero analizzato di num1 diviso per il valore intero analizzato di num2
  3. Restituire il valore all'indice specificato
  4. Gestire tutte le eccezioni possibili, restituendo invece il messaggio di errore corrispondente

I messaggi restituiti dovrebbero essere:

  • Per NumberFormatException: "Error: Invalid number format"
  • Per ArithmeticException: "Error: Division by zero"
  • Per ArrayIndexOutOfBoundsException: "Error: Invalid array index"
  • In caso di operazione riuscita: restituire il risultato come stringa

Provalo tu

import java.util.Scanner;

public class Main {
    public static String divideNumbers(String num1, String num2, int index) {
        // Scrivi il tuo codice qui
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num1 = scanner.nextLine();
        String num2 = scanner.nextLine();
        int index = Integer.parseInt(scanner.nextLine());
        
        System.out.println(divideNumbers(num1, num2, index));
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Java online