Cuprins:
Definiție - Ce înseamnă Final Block?
Un bloc final, în contextul C #, se referă la un bloc de declarații care sunt întotdeauna executate, indiferent de evenimente sau excepții neașteptate care pot apărea în timpul executării unei aplicații. Este utilizat opțional cu blocul „try / catch” și garantează executarea oricărui cod care trebuie executat înainte de ieșirea din blocul „try”, indiferent de succesul sau eșecul executării aplicației.
Execuția unui bloc final are scopul de a elibera resurse, cum ar fi conexiunile la baze de date, care sunt de obicei disponibile în cantități limitate. Prin acest mecanism, eliminarea resurselor are loc mai devreme decât operațiunea de finalizare a colectorului de gunoi, optimizând astfel memoria.
Techopedia explică Final Block
Codul din blocul final poate fi folosit pentru a gestiona excepții de îndată ce apar, curățați memoria alocată în blocul „încercați” sau aruncați obiecte care dețin resurse externe (cum ar fi mânerele de fișiere) utilizate în blocul „try”. Un bloc final, de asemenea, facilitează îndeplinirea sarcinilor de menaj, cum ar fi resetarea unui cursor la o stare normală înainte de ora unei excepții.
În general, codul din cadrul unui bloc final este executat atunci când controlul iese dintr-un bloc try, ca rezultat al executării normale, ca urmare a executării unei declarații "break", "goto", "continue" sau "return" sau due la o excepție din declarația try.
Ori de câte ori apare o excepție în blocul de încercare, controlul trece de la linia care a determinat excepția până la cel mai apropiat bloc de capturare (handler exception) și apoi la finalul blocului. De asemenea, când o excepție este regăsită într-un bloc de captură, controlul se transferă la blocul final. Astfel, se va omite codul care urmează linia în care s-a produs excepția.
Excepțiile nu ar trebui aruncate în mod explicit într-un bloc final. Dacă apare o excepție în timpul executării unui bloc în sfârșit, orice cod după punctul în care este aruncată excepția nu se va executa, iar excepția se va propaga către blocul de încercare de închidere exterior. Dacă blocul final tratează deja o altă excepție, aceasta duce la încheierea procesării excepției actuale.
Trebuie să aveți grijă să nu transferați în mod explicit execuția în sau în afara unui bloc, deoarece acesta nu este un transfer valid.
