AGB  ·  Datenschutz  ·  Impressum  







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

TRY...EXCEPT-Fehler

Ein Thema von simlei · begonnen am 2. Aug 2007 · letzter Beitrag vom 2. Aug 2007
Antwort Antwort
simlei

Registriert seit: 23. Nov 2005
119 Beiträge
 
Delphi 7 Professional
 
#1

TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 15:08
Ich hatte wieder etwas mahcen wollen wo gerne Fehlerchen auftreten. früher hatte ich einmal zum abfangen folgende Konstruktion verwendet:

Delphi-Quellcode:
try
    ShowMessage('BLUB');
except
    on E: Exception do ErrorDialog(E.Message, E.HelpContext);
end;
aber nicht einmal diese Beispiel, was so auch in der Delphi-Hilfe angegeben ist:

Zitat:
An exception handler can specify an identifier before the name of the exception class. This declares the identifier to represent the exception object during execution of the statement that follows on...do. The scope of the identifier is limited to that statement. For example,

try
...
except
on E: Exception do ErrorDialog(E.Message, E.HelpContext);
end;
funktioniert, es kommt: "Class Type required". Was zu tun?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 15:12
Die Unit SysUtils ist eingebunden?
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
simlei

Registriert seit: 23. Nov 2005
119 Beiträge
 
Delphi 7 Professional
 
#3

Re: TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 15:18
Sorry - habs. Was es nich alles gibt...

Ich hatte die Uses OutlookXP mit eingebunden. da scheint es auch eine Exception zu geben (OutlookXP.Exception, IDispatch). Diese wird hier standardmäßig genommen, und es geht nicht (man muss die SysUtil.Exception nehmen).

Edit: Ja ist eingebunden ist ja nun geklärt.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 15:25
Moin simlei,

es würde übrigens schon helfen die Reihenfolge, in der die beiden betroffenen Units unter uses stehen zu vertauschen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 19:50
Zitat von Christian Seehase:
Moin simlei,

es würde übrigens schon helfen die Reihenfolge, in der die beiden betroffenen Units unter uses stehen zu vertauschen.
Ja das dachte ich auch mal. Nachdem dann eine Weile vergangen ist, und man das Problem vergessen hat, tritt es urplötzlich wieder auf - und das noch leicht verändert.
Wenn man mal auf so ein Problem trifft, dann sollte man immer Unitnamen vor die entsprechenden Bezeichner setzen (System.Delete(xy..)). Also wirklich nur dort wo es notwendig ist.
Bei JediAPI ist das notwendig.
---
Ich finde übrigens die Informationen in Exceptions viel zu wenig. Warum wurde die Exceptionklasse nicht mit mehr Eigenschaften ausgestopft, die man dann im Create füllen muss?
Nach meiner Meinung gehört dazu :
  • Methodenname oder Funktionsname, bzw Callstack.
  • Klassenname (wenn vorhanden)
  • Quelldatei
  • Quellzeile
  • GetLastError (wenn gewünscht) mit Fehlernummer und Fehlerbeschreibung
  • Automatische Formatierung
Ich habe mir das schon lange so angewöhnt :
Delphi-Quellcode:
raise ESMWinCallFailedException.CreateFmtEx(
'Call to EqualSid failed. %s', //Beschreibung
'EqualSid', //Methodenname
ClassName, //Klassenname
'USM_SID.pas', //Quelldatei
0, //aktuelle Zeile
true, //GetLastError auswerten?
[sString]); //Formatierungen
Leider sind zwei Dinge aktuell nicht ohne weiteres zu lösen:
  • Quellzeile : Die Zeilen ändern sich ständig und ohne einen Präprozessor kann man hier Momentan nichts machen.
  • Methodenname : Hier wird zwar angegeben, dass raise in dieser Methode aufgerufen wurde, jedoch könnte die Exception auch durch
    eine andere Methode erzeugt worden sein, die eben diese Methode aufgerufen hat. Ein Callstack wäre eine prima Aufrufrückverfolgung.

Nur wie machen?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
squetk

Registriert seit: 29. Aug 2004
Ort: Cottbus
118 Beiträge
 
Delphi XE2 Professional
 
#6

Re: TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 20:36
Zitat von Dezipaitor:
Ich finde übrigens die Informationen in Exceptions viel zu wenig. Warum wurde die Exceptionklasse nicht mit mehr Eigenschaften ausgestopft, die man dann im Create füllen muss?
Nach meiner Meinung gehört dazu :
  • Methodenname oder Funktionsname, bzw Callstack.
  • Klassenname (wenn vorhanden)
  • Quelldatei
  • Quellzeile
  • GetLastError (wenn gewünscht) mit Fehlernummer und Fehlerbeschreibung
  • Automatische Formatierung
Ich finde die JEDI's haben mit dem ExceptDlg da eine Lösung, die fast alle Infos - die oben angesprochen sind - preisgibt. Den Dialog kann man ja problemlos ans Corporate Design anpassen und fügt sich dann nahtlos ins Programm ein.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: TRY...EXCEPT-Fehler

  Alt 2. Aug 2007, 20:42
Zitat von Dezipaitor:
Warum wurde die Exceptionklasse nicht mit mehr Eigenschaften ausgestopft
Weil Delphi (Win32) nicht in einer virtuellen Maschine läuft und auch keine Scriptsprache ist

Übrigens den Klassen-, Methoden- und Dateinamen könntest du über die JclDebug Funktionen bekommen.
  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 22:10 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