Menu
Coddy logo textTech

Il blocco 'try-catch'

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 39 di 65.

Ora che hai capito cosa sono le eccezioni, impariamo a gestirle con eleganza usando il blocco try-catch. Questo è lo strumento fondamentale che impedisce al tuo programma di arrestarsi quando qualcosa va storto.

Il blocco try-catch funziona racchiudendo il codice potenzialmente problematico in una sezione try. Se si verifica un'eccezione, invece di arrestare il programma, Dart passa immediatamente alla sezione catch, dove puoi gestire l'errore in modo appropriato.

try {
  // Codice che potrebbe causare un'eccezione
  int number = int.parse("abc");
} catch (e) {
  // Codice che viene eseguito se si verifica un'eccezione
  print("Something went wrong: $e");
}

In questo esempio, provare a convertire la stringa "abc" in un numero intero causerebbe normalmente un arresto anomalo del programma. Tuttavia, poiché è racchiusa in un blocco try, l'eccezione viene intercettata e gestita nel blocco catch. La variabile e contiene informazioni su cosa è andato storto.

Questo approccio consente al tuo programma di continuare a funzionare anche quando si verificano situazioni impreviste, rendendo il tuo codice molto più robusto e intuitivo.

challenge icon

Sfida

Facile

Crea un programma che converta in sicurezza le stringhe di input dell'utente in numeri usando un blocco try-catch. Il programma dovrebbe gestire i casi in cui l'input potrebbe non essere un numero valido e impedire che il programma vada in crash.

  1. Leggi una stringa di input che rappresenta un numero da convertire in un intero
  2. Usa un blocco try-catch per tentare in sicurezza la conversione usando int.parse()
  3. Se la conversione ha esito positivo, calcola il quadrato del numero (moltiplicalo per se stesso)
  4. Se la conversione non riesce e si verifica un'eccezione, gestisci l'errore in modo appropriato
  5. Visualizza il risultato o il messaggio di errore appropriato nel formato esatto mostrato di seguito

Ad esempio, se l'input è "5", il programma dovrebbe produrre:

Processing input: 5
Conversion successful!
The square of 5 is: 25

Se l'input è "abc", il programma dovrebbe produrre:

Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integer

Se l'input è "12", il programma dovrebbe produrre:

Processing input: 12
Conversion successful!
The square of 12 is: 144

Il programma deve usare un blocco try-catch per racchiudere l'operazione int.parse(). Nella sezione try, tenta di convertire la stringa di input in un intero e calcolarne il quadrato. Nella sezione catch, gestisci qualsiasi eccezione che si verifica durante la conversione e visualizza un messaggio di errore appropriato. Il programma dovrebbe continuare a funzionare normalmente, indipendentemente dal fatto che la conversione riesca o meno.

Provalo tu

import 'dart:io';

void main() {
  // Leggi la stringa di input
  String? input = stdin.readLineSync();
  
  // Mostra il messaggio di elaborazione
  print('Processing input: $input');
  
  // TODO: Scrivi il tuo codice qui sotto
  // Usa un blocco try-catch per convertire in modo sicuro l'input in un numero intero
  // Calcola il quadrato se la conversione riesce
  // Gestisci eventuali eccezioni che si verificano durante la conversione
  
}
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 Dart online