java are un mecanism de captură (captură) anumite tipuri de erori care pot fi detectate numai la programul Runtime.
Cele mai frecvente exemple pe care le putem numi excepții:
- încercați să convertiți la întregul șir care nu Conține valori numerice.
- încercați să împărțiți cu zero.
- Deschideți un fișier text inexistent sau care este blocat de o altă aplicație.
- Conectare cu o bază de date Serverul care nu este activ.
- Accesați scufundarea vectorilor și matricelor din afara domeniului.
Excepția de captare ne permite să creăm programe mult mai robuste și tolerante la eșecurile care apar În situații limitate, dar dacă este cazul, avem un algoritm alternativ pentru a reacționa la situația menționată prin împiedicarea programului să încheie execuția.
vede Rând un exemplu fără captare a excepțiilor și apoi sintaxa care implementează capturarea acesteia.
Problemă:
Efectuați încărcătura unui număr întreg de tastatură și imprimați pătratul său.
<
Program:
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); }}
Dacă executăm programul și operatorul Introduceți un șir în loc de un număr întreg, o excepție este generată și programul se oprește imediat: /p>
Programul nu rulează mai multe instrucțiuni după linia 8 a metodei principale. Numele de excepție generat este raportat: java.util.inputmismmatChexception, adică numele clasei de excepție și pachetul care conține acest lucru este informat: java.util
Primul lucru pe care îl putem spune este că acest lucru Un tip de excepții nu sunt obligatorii să le captureze, dar după cum vedem dacă programul nostru de program este adesea gresit și lanțuri de încărcare în loc de numere întregi, programul se oprește și necesită re-executarea.
Putem Implementați un program mai robust dacă capturam excepția contribuția și informarea utilizatorului care trebuie să intre pe un număr întreg obligatoriu.
Să vedem acum sintaxa aceluiași program, dar capturarea excepției:
DIV ID = „1667F383B0″>
pentru a prinde excepțiile pe care trebuie să le închidem într-o încercare de blocare a instrucțiunilor care generează excepții, în cazul nostru, metoda „Urmărit” a clasei scanerului:
DIV id = „0DE5A2CF27″>
Fiecare blocare a blocului necesită urmată de un bloc de captură:
catch (InputMismatchException ex) { System.out.println("Debe ingresar obligatoriamente un número entero."); }
După ce captura de cuvinte cheie este indicată în paranteze numele oricărui parametru (în cazul nostru îl numim „ex”) și numele excepției de a captura .
Blocul de captură nu este de obicei executat, cu excepția cazurilor excepționale care, în cadrul blocului, informează această excepție a fost concediată.
Acum, dacă executăm programul și operatorul introduce un șir. În loc de un întreg programul nostru nu se oprește, dar este informat de tipul de eroare pe care utilizatorul a săvârșit:
Când o excepție este declanșată, instrucțiunile care sunt după metoda care a concediat nu este executată:
num = teclado.nextInt(); int cuadrado = num * num; System.out.print("El cuadrado de " + num + " es " + cuadrado);
Cele două instrucțiuni după ce a apelat metoda „Urmărit” pe care o rulează dacă acestea Metoda ridică excepția.
Putem modifica acum programul nostru, astfel încât să nu se încheie până când nu mai încarcă o valoare întreagă:
DIV ID = „932C785C7D”>
da e Jecut această variantă de program, ordinea întregii încărcări nu se va termina până când nu introduceți: