AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FreePascal Exception abfangen und Fortsetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Exception abfangen und Fortsetzen

Ein Thema von DelTurbo · begonnen am 22. Dez 2020 · letzter Beitrag vom 29. Dez 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#1

AW: Exception abfangen und Forsetzen

  Alt 23. Dez 2020, 13:18
Nutzt du irgendwo Threads, die nicht durch TThread behandelt werden?

In der VCL und im TThread ist ein try-except um alles drumrum,
(die Exception im TThread wird aber standardmäßig nur abgefangen, aber nicht behandelt .... niemand reagiert drauf und loggt die oder zeugt sie an)

Wenn eine Exception bis zum System durchrauscht, dann wird der komplette Prozess umgegehend beendet.
Aber vermutlich sollte sich dann zumindestens in der Windows-Ereignisanzeige ein Eintrag finden lassen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#2

AW: Exception abfangen und Forsetzen

  Alt 23. Dez 2020, 13:25
Aber vermutlich sollte sich dann zumindestens in der Windows-Ereignisanzeige ein Eintrag finden lassen.
Hi,
erstmal danke für die Antwort. Aber das ist ein Unix Konsolen Programm. Steht im ersten Beitrag. Im moment starte ich die Threads wie folgt:
BeginThread(@SendThread,@ThreadData[Idx]);

Ist unter Unix die TThread version besser?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Exception abfangen und Forsetzen

  Alt 23. Dez 2020, 13:27
Nutzt du irgendwo Threads, die nicht durch TThread behandelt werden?

In der VCL und im TThread ist ein try-except um alles drumrum,
(die Exception im TThread wird aber standardmäßig nur abgefangen, aber nicht behandelt .... niemand reagiert drauf und loggt die oder zeugt sie an)

Wenn eine Exception bis zum System durchrauscht, dann wird der komplette Prozess umgegehend beendet.
Aber vermutlich sollte sich dann zumindestens in der Windows-Ereignisanzeige ein Eintrag finden lassen.
Du hst schon mitbekommen, dass das ein Linux Programm ist und nichts mit Windows zu tun hat?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#4

AW: Exception abfangen und Forsetzen

  Alt 23. Dez 2020, 14:26
Ups.

TThread arbeitet dort aber gleich
und FMX macht auch seine Try-Except drumrum. (betrifft also nicht nur VCL)



Hmmm, Linux hat doch auch ein paar Logs im System.
Streht da denn nicht dann auch was drin, wenn ein Programm hart abraucht?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#5

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 11:20
Hi,
erstmal sorry für die späte Antwort. Aber ich musste der "Regierung" versprechen das ich Weihnachten nicht an den PC gehe.
Nochmal zu meinem Problem. Nein, in den Logs steht nix.

Nun nochmal zu meiner eigentlichen frage: Kann ich irgendwie mitbekommen das eine exception in einer lib/dll aufgetreten ist? Wenn ja, wie?

Vielen dank nochmal im Voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#6

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 13:06
Ich weiß nicht wie es in Linux mit Laufzeitpackages (BPL) aussieht.

In Windows hat ja jeder EXE/DLL seine eigene RTTI (außer wenn mit BPLs kompiliert wurde), womit beim Übergang von Exceptions die andere Seite nichts mit der Exception-Klasse anfangen kann.
Wenn in der Library/DLL eine Exception auttritt, diese Funktion von der EXE aus aufgerufen wurde, dann geht zwar die Exception in die EXE über, aber die Delphi-Exception und deren Message-Text ist drüben dann nicht (direkt) bekannt.

Von einer Exception in einem Thread, der z.B. ausschließlich innerhalb der Library/DLL arbeitet, davon bekommt die EXE natürlich nichts mit.

Sowas wie Eurekalog/MadExcept fügten einen Hook ein, welcher Exceptions abfängt.
k.A. ob sowas schon für Linux+Delphi existiert.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
generic

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

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 13:53
Im Trace sieht man, dass das Logout noch ein "Quit" hinschicken will.
Ist vielleicht hier eine Race Condition vorhanden, dass z.B. das SSL nicht mehr richtig geladen ist oder so?
Du hast ja was mit 40 Threads gearbeitet wird.

Die Fragen die mir in den Kopf springen:
Alles über eine Verbindung?
Jeder Thread eine eigene?
Wie wurde das SSL initialisiert bzw. wie wird das abgeräumt?
Ist das OpenSSL threadsafe?


___
Zu Try / Except gibt es auf Coding BOTT ein Video:

try / finally / except - Schutzblöcke in Delphi kurz erklärt
https://www.youtube.com/watch?v=mag5Qp17NM4
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#8

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 14:05
Hi,
Jeder Thread hat seinen eigenen SMTP den er beim Start des Threads im Thread erstellt. Im Fehlerfall wird der gelöscht und neu erstellt. Das ist aber nur zur Sicherheit und meines wissen noch nicht passiert.

OpenSSL wird beim Programm Start Initialisiert. OpenSSL ist Threadfest.

Nochmal kurz an @himitsu. Es handelt sich um FreePascal. Ich selber arbeite, wenn ich es brauche, mit CodeTyphon. Da ich auch Programme für ARM Prozessoren schreibe.

Meint ihr die Class TThread wäre besser und ich könnte dann nur den einen Thread beenden?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  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 06:20 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