Java ha un meccanismo di cattura (cattura) Alcuni tipi di errori che possono essere rilevati solo al runtime del programma.
Gli esempi più comuni possiamo nominare le eccezioni:
- prova a convertirsi in una stringa completamente contenere valori numerici.
- Prova a dividere da zero.
- Apri un file di testo inesistente o bloccato da un’altra applicazione.
- Connettiti con un database Server che non è attivo.
- Accesso trucchi vettoriali e matrici fuori portata.
L’acquisizione delle eccezioni ci consente di creare programmi molto più robusti e tolleranti ai guasti che si verificano in situazioni scarse, ma se applicabile, abbiamo un algoritmo alternativo per reagire a detta situazione impedendo al programma di porre fine alla sua esecuzione.
vede Filare un esempio senza cattura di eccezioni e quindi la sintassi che implementa la sua acquisizione.
Problema:
Eseguire il carico di un numero intero da tastiera e stampare il suo quadrato.
programma:
import java.util.Scanner;public class CuadradoNumero { public static void main(String ar) { Scanner teclado = new Scanner(System.in); int num; System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); }}
Se eseguiamo il programma e l’operatore immettere una stringa anziché un numero intero viene generata un’eccezione e il programma si arresta immediatamente:
Il programma non esegue più istruzioni dopo la riga 8 del metodo principale. Il nome di eccezione generato è riportato: Java.util.InputmismMatchatchException, cioè il nome della classe di eccezione e il pacchetto che contiene è informato: java.util
La prima cosa che possiamo dire è questo Un tipo di eccezioni non è obbligatorio per catturarli, ma come vediamo se il nostro programma del programma è spesso errato e carica le catene anziché gli interi che il programma si arresta e richiede che si riesca a eseguire.
possiamo Attuare un programma più robusto se acquistiamo l’inputmismatchatchException e informiamo l’utente che deve inserire un numero intero obbligatorio.
Ora vediamo la sintassi dello stesso programma ma catturando l’eccezione:
import java.util.InputMismatchException;import java.util.Scanner;public class CuadradoNumero { public static void main(String ar) { Scanner teclado = new Scanner(System.in); int num; try { System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); } catch (InputMismatchException ex) { System.out.println("Debe ingresar obligatoriamente un número entero."); } }}
Per intrappolare le eccezioni che dobbiamo racchiudere in un blocco tentativo Le istruzioni che generano eccezioni, nel nostro caso il metodo ‘Nextin’ della classe Scanner:
try { System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); }
Ogni blocco Try richiede che sia seguito da un blocco catch:
catch (InputMismatchException ex) { System.out.println("Debe ingresar obligatoriamente un número entero."); }
Dopo che il fermo della parola chiave è indicato tra parentesi il nome di qualsiasi parametro (nel nostro caso lo chiamiamo “ex”) e il nome dell’eccezione da catturare .
Il blocco di cattura di solito non viene eseguito tranne nei casi eccezionali che all’interno del blocco Try informa tale eccezione è stato sparato.
Ora se eseguiamo il programma e l’operatore inseriamo una stringa Invece di un intero il nostro programma non si ferma ma è informato dal tipo di errore che l’utente ha commesso:
Quando un’eccezione viene attivato, le istruzioni che fanno dopo il metodo che hanno sparato non sono eseguite:
num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado);
Le due istruzioni dopo aver chiamato il metodo “Nextint” che funzionano se questo Metodo solleva l’eccezione.
Possiamo ora modificare il nostro programma ancora più in modo che non finisca fino a quando non carica un valore intero:
import java.util.InputMismatchException;import java.util.Scanner;public class CuadradoNumero { public static void main(String ar) { Scanner teclado = new Scanner(System.in); int num; boolean continua; do { try { continua = false; System.out.print("Ingrese un valor entero:"); num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado); } catch (InputMismatchException ex) { System.out.println("Debe ingresar obligatoriamente un número entero."); teclado.next(); continua = true; } } while (continua); }}
P> SÌ E Questa variante del programma, l’ordine dell’intero carico non finirà finché non si inserisce: