AGB  ·  Datenschutz  ·  Impressum  







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

Exceptionbehandlung!

Ein Thema von chris_82 · begonnen am 15. Dez 2003 · letzter Beitrag vom 15. Dez 2003
Antwort Antwort
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#1

Exceptionbehandlung!

  Alt 15. Dez 2003, 17:51
Wie kann ich bei einer Exception "Eirgendwas" auf eine bestimmte Meldung z.b "Meldung:Login" incorrect eine Aktion ausführen und auf die "Meldung: Pfad nicht vorhanden" eine andere?
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 17:54
Ich verstehe dich nicht, ganz.
Aber wenn du es so meinst, dass wenn eine Exception, z.B. über einen ungültigen Pfad kommt, dann möchtest du was machen.

Das ginge z.B. mit
Delphi-Quellcode:
try
  //Code, der die Exception ausführt
except
  //Code, der daraufhin etwas machen soll
  Mit Zitat antworten Zitat
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 18:08
Hi !
Wenn du die Exceptionklassen kennst, die ausgelöst werden, kannst du es so machen :

Delphi-Quellcode:
try
   //deine anweisungen
except
   on EIrgendwas do
      begin
         //code für die spezielle Exception
      end;
   on EIrgendwasAnderes do
      begin
         //code für die spezielle Exception
      end;
   else
      begin
        //code für alle anderen Exceptions die nicht
        //speziell behandelt werden
      end;
end;
So kannst du auf die Eigenschaften der Exception zugreifen:
Im Beispiel für jede Art, geht aber natürlich auch wie oben getrennt nach Exception.

Delphi-Quellcode:
try
   //deine anweisungen
except
   on excp: Exception do
      begin
         //zugriff auf exception zB
         showmessage(excp.Message)
      end;
end;
mfg
smk
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 18:16
Also ich meine es So Am Bsp. "EIDProtocolReplyError", die tritt z.B. einmal mit der Meldung "Login incorrect" und ein anderes mal mit der Meldung "No such fiel or directory" auf nun will ich bei jeder Meldung einen anderen Messagedialog ausgeben

so in etwa

Delphi-Quellcode:
on EIDProtocolReplyError do
 if Meldung Login incorrect then
  messagedlg(...);
 if Meldung No such file or directory then
  messagedlg(...);
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 18:45
jo denn so wie in meinem unteren beispiel.
Zur sicherheit, bevor du die eine Zeile Änderung nich selber hinbekommst

Delphi-Quellcode:
try
   //deine anweisungen
except
   on excp: EIDProtocolReplyError do
      begin
         if excp.Message = 'Login incorrectthen
            messagedlg(...);
         if excp.Message = 'No such file or directorythen
            messagedlg(...);
      end;
end;
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 18:53
Ok, ich dank dir!
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 21:12
Ich habe von Lucky letzte Woche ordentlich Schelte bekommen , als ich etwas von exzessivem Exception-handling erwähnt habe.
Er schrieb, dass es mit einem ziemlichen Code & CPU -Overhead endet. Und er hatte natürlich wieder recht

Nachdem ich mein Projekt von allen Exceptions befreit hatte, die ich nicht auf irgendeine andere Art abfangen konnte, war die exe ein paar KB kleiner und schneller!

Ich habe z.B. eine Prozedur, die die Werte eines Forms mit denen der letzten Speicherung vergleicht und nur bei einem Unterschied die Save-action auf enabled setzt und beim Schließen danach fragt.
Beim SynEdit gab's da an einer Stelle einen Fehler, den bin ich jetzt anders umgangen das Ding läuft trotz mehr Code echt schneller...

[Nachtrag]
Schneller ist relativ: ich habe den TimerInterval von 200 auf 1 reduziert - war aber ein guter Weg Luckies Einwände zu bestätigen. Im Normalbetrieb ist der Unnterschied kaum feststellbar, aber verschwendete Taktzyklen sind fast sowas wie verschwendetes Geld.
[/Nachtrag]


Ich nutze Exceptions in Oracle sehr häfig (ist halt hyper-übersichtlich), aber in Delphi gibt's schnell Probleme z.B. werden Objekte im Except-Block nicht freigegeben.
  Mit Zitat antworten Zitat
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 21:24
Das hört sich ziemlich interessant an! Werd mir deinen beitrag sicher mal anschauen. Danke!
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Exceptionbehandlung!

  Alt 15. Dez 2003, 23:33
Zitat von Smokey:
Delphi-Quellcode:
if excp.Message = 'Login incorrectthen
  messagedlg(...);
if excp.Message = 'No such file or directorythen
  messagedlg(...);
Es sollte niemals gegen den Meldungstext einer Exception geprüft werden. Diese Beschreibungen sind veränderlich und sollten es im Fall internationaler Bibliotheken auch sein!

Stattdessen sind Exceptions idR mithilfe von Unterklassen geordnet oder bieten im Zweifelsfall Eigenschaften wie zB einen Errorcode an...
In dem Artikel Exceptional practices, Part 1-3 beschreibt Brian Goetz verständlich einen gelungenen Einsatz von Exceptions.
gruß, choose
  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 16:59 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