Im Beispiel Verschachtelte Exceptions wird die finally-Klausel verwendet. Dieser Block wird im Normal- und im Ausnahmefall, also immer abgearbeitet. (Das gilt selbst dann, wenn der catch-Block mit return oder mit throw verlassen wird.)

Der finally-Block dient zum Bereinigen von Ressourcen: z.B. das Schließen von geöffneten Dateien oder von Datenbankverbindungen.

Anweisungen die unterhalb des finally-Blocks werden nur dann ausgeführt, wenn der catch- Block nicht mit return oder throw verlassen wurden:

  1. using System;
  2. using System.IO;
  3.  
  4. namespace FinallyBlock
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             StreamWriter sw = null;
  11.             try
  12.             {
  13.                 sw = new StreamWriter("text.txt");
  14.                 sw.Write("test");
  15.                 throw new Exception("Testexception");
  16.             }
  17.             catch (Exception e)
  18.             {
  19.                 Console.WriteLine(e.Message);
  20.             }
  21.             finally  // wird im Normal- u. Ausnahmefall ausgeführt
  22.             {
  23.                 if (sw != null)
  24.                     sw.Close();
  25.             }
  26.             // Dieser Code wird nur ohne return oder throw im catch-Block erreicht
  27.             Console.ReadKey();
  28.         }
  29.     }
  30. }


Last modified: Thursday, 29 November 2018, 11:12 AM