Entwickler-Ecke

Sonstiges (Delphi) - Exceptions unterdrücken


Marco D. - Do 11.08.05 18:34
Titel: Exceptions unterdrücken
Gibt es Code, mit dem Man alle möglichen Exceptions unterdrücken kann. Mein Problem ist, dass bei mir eine kommt, das Programm aber ohne sie weiterlaufen würde. Es würde also nicht weiter auffallen.


Delphi-Quelltext
1:
application.showexceptions:=false;                    


So in der Art soll es sein.


Delete - Do 11.08.05 18:37

Die Forensuche hilft auch hier weiter. Aber generell ist es eine schlechte Idee alle Exceptions unterdrücken zu wollen. Wenn was schiefgelaufen ist aufgrund einer falschen Eingabe des Benutzers, sollte man auch eine sinnvolle Fehlermeldung ausgeben.

Um was für eine Exception geht es denn?


Spaceguide - Do 11.08.05 18:49

Application.OnException


LigH - Do 11.08.05 22:35

Macht man so etwas nicht in der Regel mit


Delphi-Quelltext
1:
2:
3:
4:
5:
try
...
except
...
end


oder


Delphi-Quelltext
1:
2:
3:
4:
5:
try
...
finally
...
end


- siehe Delphi-Hilfe?


Kroni - Do 11.08.05 22:52

Try Except ist nicht schön!

Warum sollte man etwas so abfangen, wenn man das ganzen icht per if abfragen machen kann?
soetwas würde ich immer vorziehen!

Slaínte

Kroni


Delete - Do 11.08.05 23:01

Du kannst nicht alles per if abfangen. Was machst du, wenn Klassen Exceptions werfen? Wie willst du die mit if abfangen? Nehmen wir an du lädst was in einen MemoryStream, wenn dir der Speicher knapp wird, bekommst du eine EOutOfMemory Exception. Wie fängst du die per if ab?


LigH - Do 11.08.05 23:10

@ Kroni:

So ein pauschales Abhandeln kann ich nicht gutheißen: Ausnahmefehler haben ihren Sinn, und den sollte man auch nutzen. Nicht alle Probleme lassen sich tatsächlich schon vorher bedenken und vor der Ausführung abfangen, erst recht nicht in einem Mutlitasking-Betriebssystem.

Nur ein Beispiel: Zwischen der Abfrage, ob auf der Platte oder im RAM noch genug Speicher frei ist, und dem Befehl, der den Speicher belegt, kann eine Zeitscheibe eingefügt werden, die einem anderen Programm die Gelegenheit gibt, diesen Platz unerwartet zu belegen.

Noch besser: Im except-Bereich kann ich ohne weiteres auf mehrere verschiedene Ursachen prüfen. Und ich kann durch sinnvolle Strukturierung festlegen, welcher Block in welchem Fall übersprungen werden soll, wenn ein Ausnahmefehler auftritt, und durch geeignete Schachtelung von try/except und try/finally sinnvolle Abschluss-Aktionen festlegen, die trotz oder wegen eines Ausnahmefehlers durchfegührt werden sollen.

Wer diese Möglichkeiten nicht nutzt, der hat entweder festgefahrene Vorurteile, oder zu wenig Erfahrung damit, finde ich. In meiner Praxis habe ich genug Situationen gehabt, in denen es entweder nicht anders ging, oder damit besonders elegant.

Aber es wäre schon sinnvoll, auf die Beantwortung von Luckies Frage zu warten: Besser man weiß, worum es konkret geht.


Marco D. - Do 18.08.05 20:32
Titel: Ex
Hallo Leute,

nichts für ungut aber habt ihr nen Lösungsvorschlag für mich?

Es geht nur darum, einen EConvertError nicht anzuzeigen. Es geht um ein RemoteProgramm für unseren Lehrer. Ich übermittle die Mauspositionen und da tritt ab und zu mal der Fehler auf. Ohne diese Fehlermeldung würde es aber auch funzen. Was tun?

Koller


Martin1966 - Fr 19.08.05 15:10
Titel: Re: Ex
user profile iconKoller hat folgendes geschrieben:
Was tun?

bug finden und entfernen.

lg Martin


retnyg - Fr 19.08.05 16:36

user profile iconLuckie hat folgendes geschrieben:
Nehmen wir an du lädst was in einen MemoryStream, wenn dir der Speicher knapp wird, bekommst du eine EOutOfMemory Exception. Wie fängst du die per if ab?


Delphi-Quelltext
1:
if freemem < filesize then showmessage('zuwenig ram');