AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

Ein Thema von Popov · begonnen am 30. Nov 2012 · letzter Beitrag vom 3. Dez 2012
Antwort Antwort
Seite 1 von 2  1 2      
Popov
(Gast)

n/a Beiträge
 
#1

Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 30. Nov 2012, 22:09
Angeregt durch einen anderen Thread eine Frage die mich schon immer beschäftigt hat - lieber eine Fehlermeldung oder keine Fehlermeldung?

Ein Beispiel: Run('Tets'); Hier soll die Aktion "Test" durchgeführt werden, wird sie aber nicht, da es "Tets" nicht gibt. Falsche Bezeichnung. Abbruch mit Fehlermeldung oder sich still verhalten?

Nehmen wir an, dass das keine Funktion sein kann, somit ist auch kein Rückgabewert möglich.

Sicher, darauf gibt es nicht die eine richtige Antwort, und ich will nicht von den Fällen sprechen bei denen eine Fehlermeldung unbedingt sein muss, da man sonst von den falschen Voraussetzungen ausgeht. Und auf die Fehler will ich gar nicht hinaus, aber nehmen wir an - nur ein Beispiel - ein Zahlenfeld, jemand will 807 eingeben gibt aber 8o7 ein, was 87 ergibt. Fehlermeldung oder keine. Ist ein Falscher Wert, kann böse Folgen haben, andererseits kann man davon ausgehen, dass den Nutzer es schon merken wird.

Die Frage um die es geht ist, immer den Nutzer informieren oder soviel wie möglich abfangen?

Anderes Beispiel, eine StringList mit 7 Einträgen. Der Nutzer will etwas mit Insert eingeben, an die 8. Stelle, aber statt 8 9 eingibt. Die 8 wäre wie Add, einfach anfügen, 9 wäre Fehlermeldung, da außerhalb der Liste. Also lieber anfangen und an die 8. Stelle anfügen, gar nichts einfügen, oder eine Fehlermeldung?

Wir sind es gewohnt immer Meldungen zu kriegen. Html ist da ein sehr schönes Beispiel für ein anderes Konzept. Würde man auf jeden Fehler hinweisen, wären so mache Texte unlesbar. Also anderes Konzept - was falsch ist wird nicht beachtet. Nach Möglichkeiten evtl. das Beste draus machen, sonst Fehler aber abfangen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 30. Nov 2012, 22:49
Ich würde mal sagen: Je nachdem...

In einer Zeiterfassung interpretiere ich alle Zeichen <> Ziffern als ':'.
So kann man 12:30 Uhr auch mit dem Ziffernbock eingeben (12,30).

Bei der Zeitinterpretation würde das normalerweise einen Fehler ergeben.

Aber wieso soll "8o7" "87" bedeuten? Das ist eine reine Unterstellung!

Bei unbeabsichtigten Falscheingaben (ungültiger Validierung) würde ich überlicherweise einen Fehlerhinweis ausgeben.
In FireMonkey lässt sich sehr leicht ein roter Schein im das Control zuweisen.
Das ist z.B. ein Grund, warum ich mich derzeit gerade mal ein wenig damit auseinandersetze.

Tendenz: Auf Fehler (möglichst dezent) hinweisen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 1. Dez 2012, 10:14
Ich würde empfehlen auf einen Fehler immer mit einer Exception zu reagieren.
Auf keinen Fall sollte man mit direkten Fehlermeldungen reagieren,
weil man dann unter anderem keinen Stacktrace erzeugen kann.
Delphi-Quellcode:
if telefonnr = 'then
begin
  // Falsch
  ShowMessage('keine Telefonnummer eingegeben');
  exit;
end;

if telefonnr = 'then
  // Richtig
  raise EPlausiCheck.Create('Telefonnummer fehlt');
Wenn eine Funktion nicht leisten kann was ihr Name verspricht, dann muss eine Exception ausgelöst werden.
Eine Funktion namens SaveStringToFile() sollte entweder den String in dem File speichern oder eine Exception auslösen.
Auf einen Returncode (False=Fehler, True=alles ok) zu vertrauen wäre schlecht, denn wie leicht kann es passieren, dass man eine Funktion aufruft ohne das Ergebnis zu prüfen.

Siehe auch: http://de.wikipedia.org/wiki/Fail-Fast
Zitat:
Some people recommend making
your software robust by working
around problems automatically.
This results in the software “failing slowly.”
The program continues working right after an
error but fails in strange ways later on.
A system that fails fast does exactly the opposite:
when a problem occurs, it fails immediately
and visibly. Failing fast is a nonintuitive
technique: “failing immediately and visibly”
sounds like it would make your software more
fragile, but it actually makes it more robust.
Bugs are easier to find and fix, so fewer go into
production.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 1. Dez 2012, 12:10
Nun ja, SaveStringToFile ist vielleicht einer der Fälle wo eine Fehlermeldung angebracht ist. Denn wenn ein wichtiger Text nicht abgespeichert werden kann, dann sollte man es schon wissen.

Aber die klare Aussage, auf Fehler immer mit Fehlermeldungen reagieren zu müssen, ist die Anpassung des menschlichen Denkens an die Binärdenkweise der Computer. Gehe ich in den Supermarkt um 3-lagiges Toilettenpapier zu kaufen, weil zu Hause auf der letzte Rolle nur noch paar Windungen vorhanden sind, und stelle fest, dass 3-lagiges Toilettenpapier gerade alle ist, kann ich im Kopf mit raise eine Exception auslösen und ohne Toilettenpapier nach Hause gehen. Am nächsten Tag habe ich evtl. ein mächtiges Problem. Oder ich prüfe eine Alternative. Wie wäre es dieses Mal mit 4-lagiges Toilettenpapier?

Alternativen. Ich hab mal ein mittelgroßes Programm geschrieben, das nur aus Funktionen bestand. Das Konzept - alles wird über Parameter übergeben und jede Funktion, ohne Ausnahme, gibt einen Fehlercode zurück der mitteilt, ob die Funktion erfolgreich war. Die Möglichkeiten dieses Konzepts waren nicht ohne, auch wenn der Aufwand viel größer war, denn im ganzen Programm gab es keine Fehlermeldung. Auf jedes Problem gab es immer eine Alternative. Aber es geht mir nicht um das Konzept, denn zuletzt brummte mir der Kopf. Auf alles eine Alternative anzubieten bedeutete Aufwand. Ich hab es nur gemacht um es mal auszuprobieren ein Programm ohne Fehlermeldungen zu programmieren und alles abfangen zu können. Eine Fehlermeldung ist da die perfekte Antwort, die da sagt - das Problem sitzt vor dem Monitor. Das ist dein Problem, löse es selbst.

Aber zurück zu der Eingangsfrage. Immer Error oder Alternative. Errors lösen Probleme des Programmierers, denn er übergibt das Problem an den User. In einer Bitmap soll ein roter Kreis gezeichnet werden, rot ist aber gerade alle, dann Fehlermeldung ober eher blau nehmen? In eine StringList soll an -1 ein String eingefügt werden, Fehlermeldung, oder abfangen und in 0 eingeben?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 1. Dez 2012, 14:08
Aber die klare Aussage, auf Fehler immer mit Fehlermeldungen reagieren zu müssen
Wo stand das denn?
kann ich im Kopf mit raise eine Exception auslösen und ohne Toilettenpapier nach Hause gehen. Am nächsten Tag habe ich evtl. ein mächtiges Problem.
Ganz klar falsches Exception-Handling.
Auf jedes Problem gab es immer eine Alternative.
Das möchte ich doch stark bezweifeln. Irgendwann kommt immer ein Problem hoch, an das man nicht gedacht hat und deshalb keine Alternative anbieten kann.
Errors lösen Probleme des Programmierers, denn er übergibt das Problem an den User.
Oder an den Aufrufenden. Wer der auch nicht weiter weiß, dann kann er die nächsthöhere Schicht fragen. Erst ganz oben ist das dann eben der User.
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
Popov
(Gast)

n/a Beiträge
 
#6

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 1. Dez 2012, 14:45
Wo stand das denn?
Nirgendwo. Ich hab Exceptions gemeint und Fehlermeldungen geschrieben. Der Rest stimmt soweit. Sicher, Exceptions kann man abfangen, aber das ist nicht die Frage des Threads.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 1. Dez 2012, 15:00
Es kommt doch darauf an, ob das Programm seine Arbeit auch nach Auftreten eines Fehlers noch zuverlässig weiter verrichten kann oder nicht. Es muss ja auch nicht immer direkt eine Fehlermeldung sein, die man dem Benutzer präsentiert, man kann ihn ja je nach Situation auch entscheiden lassen, wie weiter verfahren werden soll. Ist das fehlerverursachende Modul eher unwichtig (also mehr in die Richtung "nice to have"), kann man es auch mit einer stillen Exception einfach ignorieren. In allen anderen Fällen sollte man IMHO aber dann doch den Benutzer informieren, dass etwas Wichtiges fehlgeschlagen ist.
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 1. Dez 2012, 23:27
Meiner Meinung nach gibt es zwei(drei) Möglichkeiten für Fehler,
a) der Benutzer hat nicht wie erwartet agiert, falsche Eingabe
b) die Umgebung reagiert nicht wie erwartet, Netzverbindung gestört
c) der unwahrscheinliche Fall, daß der Programmierer einen Fehler gemacht hat.

Der dritte Fall sollte abgefangen werden. Wenn a und b unter den Tisch gekehrt werden, dann gibt es Ergebnisse, mit denen der Benutzer meist nicht rechnet.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 2. Dez 2012, 12:37
Ich glaube die Frage hat sich verselbständigt und ist in eine etwas falsche Richtung gegangen. Irgendwann hab anscheinend auch ich dann den Faden verloren. Ok, zurück zu der eigentlichen Frage.

Es geht hier weniger um die Frage ob Fehlermeldungen sinnvoll sind oder nicht. Die Frage ging eher in die Richtung wie viel Fehlermeldungen man abfangen kann? Ist es ethisch zu vertreten eine falsche Eingabe zu korrigieren?

Findet die Polizei ein unerschlossenes Fahrzeug, reagiert sie mit einer Fehlermeldung. Das Fahrzeug wird abgeschleppt, dem Halter entstehen hohe Kosten. Alles ist Rechtens. Alternative wäre die Tür zu öffnen, den Türknopf runter zu drücken, Tür wieder schließen. Problem behoben. Das ist aber gegen das Gesetz.

Zurück zu Programmierung. Mein Beispiel noch ein mal. Insert -1 gibt es nicht, aber 0 gibt es. Fehler korrigieren oder doch eine Fehlermeldung? Im ersten Fall kriegt der Nutzer von seinem Fehler nichts mit, wird aber auch nicht im Fluß der Arbeit gestört. Im zweiten Fall wird er unterbrochen, hat aber die Möglichkeit seinen Fehler zu korrigieren.

Natürlich kann man sagen, von Fall zu Fall, aber man kann das nicht immer so handhaben. Wie oft hat man eine Eingabe und kann die falsche Eingabe anfangen. Google macht das nett. Gibt man das Wort falsch ein, liefert Google oft schon vorab das Ergebnis mit korrigiertem Wort. Sowas meine ich.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Fehlermeldung oder keine Fehlermeldung, das ist hier die Frage

  Alt 2. Dez 2012, 12:54
Dann mach es (gegf. in mehreren Stufen) einstellbar.
Mich z.B. nervt es wenn ein Programm meint intelligent sein zu müssen und mir meine Eingaben verbiegt.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:58 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