English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Come fare a fare un ciclo nel programma dopo aver lanciato un'eccezione in Java?

Leggi l'input e esegui i calcoli necessari nel metodo. Mantieni il codice che causa l'eccezione nel blocco try e cattura tutte le possibili eccezioni nei blocchi catch. Visualizza il messaggio corrispondente in ogni blocco catch e chiama nuovamente il metodo.

Esempio

Nel seguente esempio, abbiamo un array contenente 5 elementi, accettiamo due interi rappresentanti le posizioni dell'array dell'utente e eseguiamo l'operazione di divisione. Se l'intero rappresentante la posizione è maggiore di 5 (la lunghezza dell'eccezione ArrayIndexOutOfBoundsException), si verifica ArrayIndexOutOfBoundsException e se la posizione scelta per il denominatore è 4 (cioè 0), si verifica ArithmeticException.

Stiamo leggendo i valori e calcolando i risultati tramite metodo statico. Stiamo catturando queste due eccezioni nei due blocchi catch e chiamiamo questo metodo dopo aver visualizzato il messaggio corrispondente.

import java.util.Arrays;
import java.util.Scanner;
public class LoopBack {
   int[] arr = {10, 20, 30, 2, 0, 8};
   public static void getInputs(int[] arr){
      Scanner sc = new Scanner(System.in);
      System.out.println("Scegli il numeratore e il denominatore (non 0) da questo array (inserisci posizioni da 0 a 5)");
      int a = sc.nextInt();
      int b = sc.nextInt();
      try {
         int result = (arr[a]) / (arr[b]);
         System.out.println("Risultato di " + arr[a] + "/" + arr[b] + ": " + result);
      catch(ArrayIndexOutOfBoundsException e) {
         System.out.println("Errore: Hai scelto una posizione che non è nell'array: RIPROVA");
         getInputs(arr);
      }catch(ArithmeticException e) {
         System.out.println("Errore: Il denominatore non deve essere zero: RIPROVA");
         getInputs(arr);
      }
   }
   public static void main(String [] args) {
      LoopBack obj = new LoopBack();
      System.out.println("Array: " + Arrays.toString(obj.arr));
      getInputs(obj.arr);
   }
}

Risultato di output

Array: [10, 20, 30, 2, 0, 8]
Scegli il numeratore e il denominatore (non 0) da questo array (inserisci posizioni da 0 a 5)
14
24
Errore: Hai scelto una posizione che non è nell'array: RIPROVA
Scegli il numeratore e il denominatore (non 0) da questo array (inserisci posizioni da 0 a 5)
3
4
Errore: Il denominatore non deve essere zero: RIPROVA
Scegli il numeratore e il denominatore (non 0) da questo array (inserisci posizioni da 0 a 5)
0
3
Risultato di 10/2: 5