AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?
Thema durchsuchen
Ansicht
Themen-Optionen

Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

Ein Thema von Der schöne Günther · begonnen am 11. Apr 2013 · letzter Beitrag vom 12. Apr 2013
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#1

AW: Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

  Alt 11. Apr 2013, 16:43
Ich dachte schon, ich sei der Einzige, der sich das fragt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.201 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

  Alt 11. Apr 2013, 16:50
Was willst du uns mit dem Code jetzt sagen?
Ich dachte schon, ich sei der Einzige, der sich das fragt
Das Erkennen wird für Euch erst beginnen, wenn Ihr als Erkennende vom zu Erkennenden Abstand nehmt.

Seid Ihr soweit? Gut. Ich denke es ging um meine erste (nebensächliche Frage), ob wirklich erst der Destruktor aufgerufen und dann die Exception nach oben gereicht wird. Das hier scheint zu bestätigen: Ja, das ist so.



Um die Wogen der Verwirrung, was ich eigentlich wollte, noch etwas zu glätten: Ich hatte irgendwo im Destruktor eines Objekts (das seinen Konstruktor nicht vernünftig auf die Reihe bekam) einen Thread terminiert (myThread.Terminate()) der allerdings bislang noch garnicht initialisiert werden konnte.
Anstatt nun das zu erkennen (ich hatte vom zu Erkennenden als Nicht-Erkennender wohl noch nicht genug Abstand genommen) habe ich erst mal ein wirres Thema hier im Forum erstellt. Vielleicht hilft etwas weniger Kaffee in Zukunft dagegen...
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

  Alt 11. Apr 2013, 16:52
Ich war mir nicht ganz sicher, ob der Destruktor überhaupt aufgerufen wird
(klar logisch ists, dass er aufgerufen wird - wenn man mal drüber nachdenkt xD)
Weiters zeigt der Code einfach nur, dass es eben zu keinen Problemen im Destruktor
kommt, weil free nachprüft. Im Grunde wollt ich damit indirekt zeigen, dass er seine
Frage selber auch beantworten hätte können.. Aber pschtt..
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (11. Apr 2013 um 16:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#4

AW: Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

  Alt 11. Apr 2013, 16:53
Das muss alten Leuten doch auch mal gesagt werden *mitdemKrückstockwink*
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

  Alt 11. Apr 2013, 17:02
Daß der Destructor zur Gänze durchlaufen wird bevor die Exception an die Oberfläche kommt.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Der Konstruktor ist abgestürzt - Wie gehe ich im Destruktor am besten vor?

  Alt 11. Apr 2013, 17:30
Also ich finde, dass es eig. ok ist, im Konstruktor die Objekte zu erzeugen. Ein absolut wichtiger Punkt beim sauberen Design - neu aufgeschnapt übrigens xD - jedoch ist, dass man nichtsa außer Instanzierung im Konstruktor betreibt - also keine Initialisierung über Methoden oder dergleichen.

Das Problem ist nämlich, wenn man bsp. eine virtuelle Methode zum initialisieren verwendet, kann und wird die von erbenden Klassen überschrieben werden. Üblicherweise hat man aber keine Kontrolle über die Implementierung dieser - dh. die überschreibende (initialisier-) Methode kann fälschlicherweise auf Felder/Objekte der Klasse zugreifen, die jedoch noch nicht initialisiert worden sind, weil die Methode eben erst im Konstruktor aufgerufen wird.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  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 02:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz