PascalABC.NET este o nouă generație de limbaj de programare Pascal, incluzând clasicul Pascal, majoritatea funcțiilor de limbă Delphi și o serie de extensii proprii. Acesta este implementat pe platforma Microsoft.NET și conține toate instrumentele limbajului modern: clase, supraîncărcarea operațiilor, interfețe, tratarea excepțiilor, clase generice și subrutine, colectarea gunoiului, expresii lambda, instrumente de programare paralelă.
PascalABC.NET este un limbaj multi-paradigm: poate fi programat în stiluri structurale, orientate pe obiecte și funcționale.
PascalABC.NET este, de asemenea, un mediu de dezvoltare integrat simplu și puternic care susține tehnologia IntelliSense, care conține instrumente de formatare automată, un program integrat de depanare și un designer integrat de formular.
Carte: descrierea limbajului PascalABC.NET
Excepție de manipulare
Manipularea excepțiilor: Prezentare generală
Când apare o eroare în timpul executării programului, se generează o așa-numită excepție. care pot fi interceptate și procesate. O excepție este un obiect al unei clase derivate din clasa Excepție care este creată atunci când are loc o excepție.
Există o serie de tipuri de excepții standard. De asemenea, puteți defini tipuri de excepții personalizate.
Dacă excepția nu este procesată, programul va eșua cu o eroare. Pentru a trata excepțiile, utilizați instrucțiunea încercați. cu excepția.
De obicei, în subprograme se generează excepții, deoarece dezvoltatorul subrutinei, de regulă, nu știe cum să facă față situației de eroare. La punctul de a apela subrutina, de obicei este deja cunoscut modul de a face față excepției. De exemplu, să presupunem că este dezvoltată următoarea funcție:
funcția mymod (a, b: integer): integer;
Dacă apelați mymod (1.0), atunci va fi crescută excepția System.DivideByZeroException a diviziunii întregi cu 0.
Luați în considerare o încercare naivă de a face față unei situații de eroare în interiorul funcției mymod:
funcția mymod (a, b: integer): integer;
writeln ('Funcția mymod: împărțit cu 0');
O astfel de soluție este rea, deoarece programatorul care dezvoltă funcția mymod nu știe cum va fi folosit. De exemplu, atunci când apelați funcția mymod într-o buclă, vom vedea pe ecran un mesaj de eroare mai multe.
Cea mai simplă cale este să lăsați versiunea originală a funcției și să rezolvați excepția System.DivideByZeroException:
writeln ("Diviziunea cu 0");
Diferența față de ieșirea din cadrul funcției este că atunci când dezvoltăm programul, determinăm acțiunea pe care trebuie să o efectuăm când procesăm excepția. Acesta poate fi un mesaj de eroare specific, ieșire în fișierul de eroare sau o instrucțiune goală (în cazul în care trebuie să stingeți în tăcere o excepție).
Cu toate acestea, această soluție are un dezavantaj semnificativ: excepția System.DivideByZeroException va fi ridicată la a = 1 și nu va fi asociată cu funcția mymod. Pentru a elimina acest dezavantaj, definim clasa noastră de excepție și o excităm în funcția mymod:
funcția mymod (a, b: integer): integer;