AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi try..except im try..except - Reihenfolge des Aufrufes
Thema durchsuchen
Ansicht
Themen-Optionen

try..except im try..except - Reihenfolge des Aufrufes

Ein Thema von haentschman · begonnen am 5. Jan 2009 · letzter Beitrag vom 5. Jan 2009
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#1

try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 18:53
Guten Abend alle miteinander...

folgende Konstellation:
Delphi-Quellcode:
try
.
.
A;
.
.
except
  CodeA;
end;

procedure A;
begin
  try
    .
    .
  except
    CodeB
  end;
end;
- Procedure A wird in einem try/except Block ausgeführt.
- in der Procedure A steht ebenfalls ein try/except Block.

tritt in Procedure A in dem try/except Block eine Exception auf wird CodeA ausgeführt.
ich dachte eigentlich, daß die Reihenfolge CodeB, wenn die Exception in Procedure A auftritt bzw. CodeA wenn die exception in einer der anderen Anweisungen des ersten try/except auftritt.

Frage: kann ich die Priorität beeinflussen oder ist das as Designed

Danke für Infos.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 18:56
wenn zwischen dem Try-Except in ProcedureA ein Fehler auftritt sollte CodeB ausgeführt werden und CodeA gar nicht außer du wirfst du Exception erneut. Wenn das bei dir anders ist hast du irgendwas kaputt gemacht
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#3

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 19:04
Zitat:
außer du wirfst du Exception erneut.
hatte ich vergessen zu erwähnen.
- in jedem except setze ich einen speziellen internen Fehlertext und löse die Exception erneut aus.
- dann hast du Recht und die Exception kommt in dem anderen except raus, dann wieder raise und ich lande in meiner Fehlerbehandlung.

Gibt es eine Möglichkeit gleich in der "globalen" Fehlerbehandlung zu landen bei jedem einzelnen except unabhängig von der "Verschachtelung" ?

Die Fehlerbehandlung: Application.OnException:= eAVException;

Danke für die schelle Antwort.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 19:06
Lasse den lokalen Block weg. Ab D2009 kann man hierarchische Handler verwenden ( Verschachtelung)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 19:09
Du könntest Application.OnException selbst aufrufen:
Delphi-Quellcode:
if Assigned(Application.OnException) then
  Application.OnException(...);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#6

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 19:15
Zitat:
Lasse den lokalen Block weg.
...das geht so einfach nicht.

- auf der einen Seite brauche ich den in Procedure A weil diese von verschiedenen Stellen aufgerufen wird.
- zum anderen brauche ich den den anderen um die restlichen Anweisungen und blöderweise Procedure A mittendrin.

...ich könnte den den ganzen Block in 2 Blöcke aufsplitten und Procedure A blank stehen lassen.
Delphi-Quellcode:
if Assigned(Application.OnException) then
  Application.OnException(...);
das raise durch den Aufruf ersetzen... ok... gute Idee
die 3 Punkte stellen den Procedur Namen meiner Fehlerbehandlung dar ?

Danke an alle...
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 19:17
Zitat von mkinzler:
Lasse den lokalen Block weg. Ab D2009 kann man hierarchische Handler verwenden ( Verschachtelung)
Laut Profil hat er aber Delphi 2006
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 19:20
Schon klar, war auch nur informativ
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#9

Re: try..except im try..except - Reihenfolge des Aufrufes

  Alt 5. Jan 2009, 20:58
Danke für Eure Hilfen...

Durch das rumprobieren habe ich gleich noch einen tollen Effekt herausgefunden. FastReport -> frReport.LoadFromFile schmeißt bei fehlendem File keine Exception sondern ist nur False. Das heißt, daß ich mir den einen Block sowieso sparen kann und ich bei fehlendem File selbst eine Exception werfen muß.
Delphi-Quellcode:
var E: Exception;
begin
  E:= Exception.Create('Formular ist nicht vorhanden oder beschädigt');
  try
    .
    .
    if not frReport1.LoadFromFile(DBPfad + 'Formulare\21.fr3')then
      begin
        Application.OnException(self,E);
        exit;
      end;
    Formular21;
  finally
    E.Free
  end;

procedure Formular21;
try
  .
except
  FehlerCode:= 'E165';
  Fehlerstatus:= False;
  Fehlertext:= 'Datenaufbereitung Formular 21 fehlgeschlagen. ';
  raise;
end;
also... erledigt aber wieder was gelernt.

Danke an alle...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz