Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: Unterschiede showmessage und raise Exception.Create

  Alt 8. Mär 2006, 15:50
Na ja, um den Unterschied etwas anders zu erklären: Das mit dem ShowMessage ist nur eine Mitteilung: "Es is was schiefgelaufen". Einfach nur, damit der Benutzer weiß, ob was geht oder nicht.
Exceptions sind da schon eine Stufe umfangreicher und geschickter:
Exceptions sind nämlich nicht nur dazu da, um Fehler anzuzeigen, sondern generell zu sagen: "Da isn Fehler". Von welchem Typ die Exception ist kann dann zeigen, welcher Fehler aufgetreten ist.
Um mal ein Beispiel zu nennen:
Du hast eine Liste mit 10 Elementen und der Benutzer will auf ein Element davon zugreifen. D.h. er kann jetzt auf das erste, dritte, oder hundertste zugreifen wollen.
Mit der ersten Variante wärs dann so:
Delphi-Quellcode:
function TMeineListe.GetElement(index: integer);
begin
  //wenn index nicht gültig dann
    Showmessage('dieses Element gibts nicht.');
end;

//und irgendwo in deiner Applikation:
  MeineListe.GetElement(100);
1. es wird von TList vorbestimmt, was mit dem Fehler passiert.
und 2. hast du dann beim Aufruf keine Ahnung, dass was schiefgelaufen is.
Mit Exceptions siehts etwas anders aus:
Delphi-Quellcode:
function TMeineListe.GetElement(index: integer);
begin
  //wenn index nicht gültig dann
    raise Exception.Cretae('dieses Element gibts nicht.');
end;

//und irgendwo in deiner Applikation:
  try
    MeineListe.GetElement(100);
  except
    ShowMessage('Dieses Element gibts net....');
  end;
Hier kriegst du 1. mit, wenn etwas schiefgelaufen is
2. bestimmst du selbst, was nach einem Fehler passiert, und kannst weitere Konsequenzen ziehn (Liste freigeben, dem user nen Stromschlag geben ect.)
Es steht dir natürlich auch frei, die in TMeineListe.GetElement geworfene Exception nicht abzufangen. Dann wird eben die Typische Meldung angezeigt, vonwegen "Project Soundso raised exception class Exception with message 'was issn überhaupt schiefgegangen?'" ect.
Exceptions sind eben eine bereits implementierte, und nicht ungeschickte Lösung zur Fehlerbehandlung, die der ShowMessage-Variante vorzuziehn sind.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat