![]() |
Exceptionbehandlung!
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?
|
Re: Exceptionbehandlung!
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 |
Re: Exceptionbehandlung!
Hi !
Wenn du die Exceptionklassen kennst, die ausgelöst werden, kannst du es so machen :
Delphi-Quellcode:
So kannst du auf die Eigenschaften der Exception zugreifen:
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; Im Beispiel für jede Art, geht aber natürlich auch wie oben getrennt nach Exception.
Delphi-Quellcode:
mfg
try
//deine anweisungen except on excp: Exception do begin //zugriff auf exception zB showmessage(excp.Message) end; end; smk |
Re: Exceptionbehandlung!
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(...); |
Re: Exceptionbehandlung!
jo denn so wie in meinem unteren beispiel.
Zur sicherheit, bevor du die eine Zeile Änderung nich selber hinbekommst :wink:
Delphi-Quellcode:
try
//deine anweisungen except on excp: EIDProtocolReplyError do begin if excp.Message = 'Login incorrect' then messagedlg(...); if excp.Message = 'No such file or directory' then messagedlg(...); end; end; |
Re: Exceptionbehandlung!
Ok, ich dank dir!
|
Re: Exceptionbehandlung!
Ich habe von Lucky letzte Woche ordentlich Schelte bekommen :stupid: , 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 :evil: 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 :arrow: 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. |
Re: Exceptionbehandlung!
Das hört sich ziemlich interessant an! Werd mir deinen beitrag sicher mal anschauen. Danke!
|
Re: Exceptionbehandlung!
Zitat:
Stattdessen sind Exceptions idR mithilfe von Unterklassen geordnet oder bieten im Zweifelsfall Eigenschaften wie zB einen Errorcode an... In dem Artikel ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 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