Endlich blockieren

Definition - Was bedeutet "Endlich blockieren"?

Ein finally-Block bezieht sich im Kontext von C # auf einen Block von Anweisungen, die unabhängig von unerwarteten Ereignissen oder Ausnahmen, die während der Ausführung einer Anwendung auftreten können, immer ausgeführt werden. Es wird optional mit dem Block "try / catch" verwendet und garantiert die Ausführung von Code, der vor dem Verlassen des Blocks "try" ausgeführt werden muss, unabhängig vom Erfolg oder Misserfolg der Ausführung der Anwendung.

Durch die Ausführung eines finally-Blocks sollen Ressourcen wie Datenbankverbindungen freigegeben werden, die normalerweise in begrenzten Mengen verfügbar sind. Durch diesen Mechanismus erfolgt die Entsorgung von Ressourcen früher als die Finalisierungsoperation des Garbage Collectors, wodurch der Speicher optimiert wird.

Technische.me erklärt schließlich Block

Der Code im finally-Block kann verwendet werden, um Ausnahmen zu behandeln, sobald sie auftreten, den im Block "try" zugewiesenen Speicher zu bereinigen oder Objekte zu entsorgen, die externe Ressourcen (wie Dateihandles) enthalten, die im Block "try" verwendet werden. Ein finally-Block erleichtert auch die Ausführung von Verwaltungsaufgaben wie das Zurücksetzen eines Cursors in einen normalen Zustand vor dem Zeitpunkt einer Ausnahme.

Im Allgemeinen wird der Code innerhalb eines finally-Blocks ausgeführt, wenn die Steuerung einen try-Block als Ergebnis einer normalen Ausführung verlässt, als Ergebnis der Ausführung einer Anweisung "break", "goto", "continue" oder "return" oder fällig zu einer Ausnahme aus der try-Anweisung.

Immer wenn im try-Block eine Ausnahme auftritt, geht die Steuerung von der Zeile, die die Ausnahme verursacht hat, zum nächsten catch-Block (Exception-Handler) und dann zum finally-Block. Wenn eine Ausnahme in einem Catch-Block erneut ausgelöst wird, wird die Steuerung auf den finally-Block übertragen. Daher wird Code, der der Zeile folgt, in der die Ausnahme aufgetreten ist, übersprungen.

Ausnahmen sollten nicht explizit in einem finally-Block ausgelöst werden. Wenn während der Ausführung eines finally-Blocks eine Ausnahme auftritt, wird kein Code nach dem Punkt, an dem die Ausnahme ausgelöst wird, nicht ausgeführt, und die Ausnahme wird an den äußeren umschließenden try-Block weitergegeben. Wenn der finally-Block bereits eine andere Ausnahme behandelt, wird die Verarbeitung der aktuellen Ausnahme beendet.

Es sollte darauf geachtet werden, die Ausführung nicht explizit in einen endgültigen Block oder aus diesem heraus zu übertragen, da dies keine gültige Übertragung ist.

Diese Definition wurde im Kontext von C # geschrieben