Gültigkeitsbereich von Exception-Behandlungsroutinen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Exception-Behandlungsroutinen erstellen

Sie müssen nicht in jedem Block Behandlungsroutinen für jeden Exception-Typ bereitstellen. Normalerweise stellen Sie nur Behandlungsroutinen für die Exceptions bereit, die Sie explizit im jeweiligen Block verarbeiten wollen.

Kann ein Block eine bestimmte Exception nicht behandeln, wird die Ausführung an den umgebenden Block übergeben (bzw. an den Code, der diesen Block aufgerufen hat). Die Exception liegt dabei weiterhin vor. Dieser Prozess der Erweiterung des Gültigkeitsbereichs wird fortgesetzt, bis entweder der höchste Punkt in der Anwendungshierarchie erreicht ist oder ein Block auf einer beliebigen übergeordneten Ebene die Exception behandeln kann.

Sie können daher Exception-Behandlungsroutinen verschachteln. Mithilfe verschachtelter Blöcke können Sie auch eine lokale Behandlung für bestimmte Exceptions definieren, die an Stelle der allgemeinen Behandlung im umgebenden Block zum Tragen kommt. Beispiel:



 try
 { Anweisungen }
   try
 { Spezielle Anweisungen }
   except
     on ESomething do
     begin
 { Behandlung nur der speziellen Anweisungen }
     end;
   end;
   { weitere Anweisungen }
 except
   on ESomething do
   begin
     { Anweisungen und weitere Anweisungen werden behandelt, aber keine speziellen Anweisungen }
   end;
 end;



 try
 {
   // Anweisungen
   try
   {
     // Spezielle Anweisungen
   }
   catch (const ESomething &E)
   {
     // Nur die speziellen Anweisungen werden verarbeitet;
   }
   // Zusätzliche Anweisungen
 }
 catch (const ESomething &E)
 {
   // Anweisungen und zusätzliche Anweisungen werden verarbeitet, aber nicht die speziellen Anweisungen
 }



Anmerkung:  Diese Art der Schachtelung ist nicht auf Exception-Behandlungsblöcke beschränkt. sondern kann auch in Beendigungsblöcken (siehe Beendigungsblöcke) oder in einer Kombination aus Exception-Behandlungs- und Beendigungsblöcken eingesetzt werden.

Siehe auch