AGB  ·  Datenschutz  ·  Impressum  







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

Exception in Anwendung ohne Form

Ein Thema von blablab · begonnen am 20. Feb 2013 · letzter Beitrag vom 20. Feb 2013
Antwort Antwort
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 07:43
Hallo!

Ich hab ein kleines Programm ohne Forms. Das macht 100ms lang was und schließt sich dann wieder, fertig. Aber falls ein Fehler auftritt würde ich gerne eine Fehlermeldung anzeigen. Wenn ich aber eine Exception auslöse bekomme ich von Windows eine Fehlermeldung "Programm.exe funktioniert nicht mehr" und erst danach wird meine Fehlermeldung gezeigt.
Aber wie kann ich eine eine Exception ohne Windows-Fehlermeldung anzeigen?

Grüße
blablab
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 07:57
Das kann ich nicht nachvollziehen:
Delphi-Quellcode:
program ExceptionTest;

uses
  SysUtils, Windows;

begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    raise Exception.Create('Alles kaputt hier');
  except
    on E: Exception do
      MessageBox(0, PChar(E.Message), nil, MB_OK or MB_ICONERROR);
  end;
end.
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
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 08:45
Gibt es da noch eine andere Möglichkeit? Normalerweise wird ja noch der Exception-Typ und die Adresse angegeben.

Übrigens tritt der Windows-Fehler bei mir nur auf, wenn ich das Programm direkt ausführe, aus Delphi heraus funktioniert es. Ist das etwa nur bei mir der Fall??? (Benutze Delphi7 unter Win7 777)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 08:53
Die Adresse? Das wäre mir neu, aber Du kannst mein Beispiel ja noch erweitern:
Delphi-Quellcode:
program ExceptionTest;

uses
  SysUtils,
  Windows;

type
  EMyException = class(Exception);

begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    raise EMyException.Create('Alles kaputt hier');
  except
    on E: Exception do
      MessageBox(0, PChar(Format('%s:%s%s', [E.ClassName, sLineBreak, E.Message])),
        nil, MB_OK or MB_ICONERROR);
  end;
end.
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
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 09:13
Danke!

Scheinbar wird es von TApplication auch nicht anders geregelt:
Delphi-Quellcode:
procedure TApplication.ShowException(E: Exception);
var
  Msg: string;
begin
  Msg := E.Message;
  if (Msg <> '') and (AnsiLastChar(Msg) > '.') then Msg := Msg + '.';
  MessageBox(PChar(Msg), PChar(GetTitle), MB_OK + MB_ICONSTOP);
end;
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#6

AW: Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 09:28
Hi DaddyH,

ich wollt Dir grad um den Hals fallen wegen

MessageBox(0, PChar(Format('%s:%s%s', [E.ClassName, sLineBreak, E.Message])),
dann hab ich nachgeschaut : sLineBreak iss ja nur CRLF

ich dachte, das wäh'r n Äquivalent zu __LINE__
ich such schon lang nach einem Konstrukt, dass mir die Zeilennummmer des Exceptionwerfers ausgibt

mfg
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Exception in Anwendung ohne Form

  Alt 20. Feb 2013, 09:38
Ich habs durch Zufall gefunden! 1:1 dieselbe Meldung die ich nach der Windows-Fehlermeldung bekomme, bekomme ich auch mit:
Delphi-Quellcode:
program ExceptionTest;

uses
   SysUtils,
   Windows;

type
   EMyException = class(Exception);

begin
   try
     { TODO -oUser -cConsole Main : Code hier einfügen }
     raise EMyException.Create('Alles kaputt hier');
   except
     on e: Exception do SysUtils.ShowException(e, nil);
   end;
end.
nur leider weiß ich nicht woher ich die Adresse bekommen soll...

(Ich hab eine eigene Methode mit dem Namen ShowException geschrieben und dann ist mir aufgefallen, dass es das ja schon in SysUtils gibt )


Edit:

Ich habs! Die ultimative Lösung ist :
Delphi-Quellcode:
program ExceptionTest;

uses
   SysUtils,
   Windows;

type
   EMyException = class(Exception);

begin
   try
     { TODO -oUser -cConsole Main : Code hier einfügen }
     raise EMyException.Create('Alles kaputt hier');
   except
     on e: Exception do SysUtils.ShowException(e, ExceptAddr);
   end;
end.

Geändert von blablab (20. Feb 2013 um 09:51 Uhr)
  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 14:34 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