AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Absturz trotz try/finally

Ein Thema von MathiasSimmack · begonnen am 27. Mai 2004 · letzter Beitrag vom 1. Jun 2004
Antwort Antwort
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Absturz trotz try/finally

  Alt 27. Mai 2004, 14:46
Ich bin kurz vor dem Verzweifeln. Was ist bei einem VCL-Programm anders als bei einem nonVCL/Konsolenprogramm? Ich habe hier in etwa folgenden Code:
Delphi-Quellcode:
rs := Interface.Create;
if(rs <> nil) then
try
  try
    rs.Connect;
  except
    rs := nil;
  end;

  if(rs <> nil) then
  try
    filter := rs.GetFilterInterface;

    if(filter <> nil) then
    try
      filter.Create('Filter','');
    except
      // do nothing
    end;
  finally
    rs.CloseConnection;
  end;
finally
  rs := nil;
end;
Es ist nur Pseudo-Code, sorry. Aber grundlegend sieht er so aus.


Wenn ich den Code jetzt in einem VCL-Programm starte (besser gesagt: wenn ich das kompilierte VCL-Programm starte), dann legt er den Filter mit dem leeren Inhalt an, schließt die Verbindung, und fertig. Mache ich das jetzt in einen nonVCL/Konsolenprogramm, dann erhalte ich eine Zugriffsverletzung, und die Verbindung wird nicht richtig geschlossen. Trotzdem wird der Filter angelegt, nur dass (im Gegensatz zum VCL-Programm) diese Zugriffsverletzung erscheint. Ist der Filter nicht leer, also
      filter.Create('Filter','Testinhalt'); dann geht es auf einmal.


Kennt jemand den Grund dafür?
Ich muss zugeben, ich habe keine Ahnung.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#2

Re: Absturz trotz try/finally

  Alt 27. Mai 2004, 14:51
Jupp.

Die VCL hat ein eigenes Exception-Handling, und sauber abgefangene Exceptions werden nicht durchgereicht.

Bei nonVCL fehlt das ganze Zeugs (ist irgendwo in Application drin).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Absturz trotz try/finally

  Alt 27. Mai 2004, 16:08
Die "SysUtils.pas" hat gereicht. Aber dennoch, ein guter Tipp. Jetzt die obligatorische Frage: Wie kann ich auf die SysUtils-Unit verzichten (um das Programm klein zu halten) und trotzdem die genannte Exception abfangen ... bzw. abgefangen wird sie ja eigentlich schon, nur löst sie eben noch die Meldung aus.

Ein bisschen Lektüre zum Thema täte es auch schon.
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Absturz trotz try/finally

  Alt 30. Mai 2004, 20:57
@MathiasSimmack: Kopier' dir die entsprechenden Teile aus der Sysutils.pas und füge sie bei dir ein.

Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Absturz trotz try/finally

  Alt 1. Jun 2004, 11:50
mit try finally unterdrückst du keine exceptions.
es wird nur zusaetzlich der finally block ausgefuehrt.
nach dem block wird die exception behandelt.
d.h. der code wird abgebrochen und in den exceptionhandler der appliction gesprungen.
  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:36 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