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