AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Konsolenanwendung und raise einer Exception
Thema durchsuchen
Ansicht
Themen-Optionen

Konsolenanwendung und raise einer Exception

Ein Thema von Dalai · begonnen am 30. Okt 2012 · letzter Beitrag vom 30. Okt 2012
Antwort Antwort
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#1

Konsolenanwendung und raise einer Exception

  Alt 30. Okt 2012, 12:35
Hey Leute ,

auf zum nächten Problem . Ich habe mich gestern mit den Möglichkeiten der Parameterübergabe an (Delphi-)Konsolenprogramme beschäftigt, um eine ähnliche Verhaltensweise wie bei Linux-Programmen zu erreichen (analog zu getopts der Bash). Dabei bin ich auf die Unit uSandkasten gestoßen.

Da dieser Unit weder eine Beschreibung noch ein Beispiel beilag, musste ich erstmal rausfinden, wie die darin enthaltene Klasse TGetOpt zu verwenden ist. Dabei wurde das Ende meiner Anwendung immer wieder von DrWatson abgefangen, was mich schon an den Fähigkeiten des Unit-Programmierers zweifeln ließ. Das war aber nur so lange der Fall wie ich meine Anwendung außerhalb von Delphi ausführte, denn im Delphi-Debugger wurden die von den Klassen/Methoden der Unit geworfenen Exceptions ordentlich gefangen und deren Meldung angezeigt.

Lange Rede, gar kein Sinn .
Die kurze Frage daher: Muss ich mich bei einer Konsolenanwendung ausnahmslos selber um das Fangen von Exceptions kümmern? Also das "nacharbeiten", was offensichtlich die Klasse TApplication sonst in einer GUI-Anwendung ohne Zutun des Programmierers macht?

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Konsolenanwendung und raise einer Exception

  Alt 30. Okt 2012, 12:36
Kuze Antwort: Ja.

In der VCL ist in der Message-Loop, also da wo z.B. eine Button-Click-Methode aufgerufen wird, wenn man auf 'nen Button klickt, ein Try-Except vorhanden, welches dieses abfängt und die Exception-MessageBox anzeigt.
(das erkennt man ganz schnell, wenn man nicht TThread verwendet, im Thread eine Exception auftritt und gleich das ganze Programm abraucht, wenn man das nicht abfängt)

Darum sollte man mindestens in der DPR den gesamten Code mit sowas Ähnlichem umschließen.
Delphi-Quellcode:
try
  ... //dein code
except
  on E: Exception do begin
    WriteLn;
    WriteLn(E.ClassName, ': ', E.Message);
    WriteLn;
    WriteLn('Beenden mit [Enter]');
    ReadLn;
  end;
end;
(in neueren Delphis ist sowas auch direkt gleich in einer neu angelegten Consolenanwendung enthalten, bzw. wurde da gleich in die DPR eingefügt)

[edit]
siehe
http://www.delphipraxis.net/171133-p...nprogramm.html
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Okt 2012 um 12:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Konsolenanwendung und raise einer Exception

  Alt 30. Okt 2012, 13:23
OK, alles klar. Dankeschön!

MfG Dalai
  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 21:23 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