Testen auf Fehlerzustände
Aktualisiert: November 2007
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Nur "Systemeigen" |
|||
Standard |
Nur "Systemeigen" |
|||
Pro und Team |
Nur "Systemeigen" |
Tabellenlegende:
Vorhanden |
|
Nicht vorhanden |
|
Befehl oder Befehle, die standardmäßig ausgeblendet sind. |
Assertionen ermöglichen es Ihnen, den Code an den Stellen, an denen alle Fehler bereits behandelt worden sein sollten, auf Fehlerzustände zu testen. Im folgenden Beispiel gibt eine Grafikroutine einen Fehlercode oder, bei erfolgreicher Ausführung, 0 (null) zurück.
myErr = myGraphRoutine(a, b);
/* Code to handle errors and
reset myErr if successful */
ASSERT(!myErr); -- MFC version
_ASSERT(!myErr); -- CRT version
Wenn der Fehlerbehandlungscode einwandfrei funktioniert, sollte der Fehler behandelt und myErr vor Erreichen der Assertion auf 0 (null) zurückgesetzt werden. Wenn myErr jedoch einen anderen Wert hat, schlägt die Assertion fehl, das Programm wird angehalten, und Dialogfeld "Assertionsfehler" wird geöffnet.
Assertionsanweisungen sind allerdings kein Ersatz für Fehlerbehandlungscode. So kann die Assertionsanweisung im folgenden Beispiel im Releaseversionscode u. U. Probleme bereiten:
myErr = myGraphRoutine(a, b);
/* No Code to handle errors */
ASSERT(!myErr); // Don't do this!
_ASSERT(!myErr); // Don't do this, either!
Bei diesem Code wird davon ausgegangen, dass der Fehlerzustand durch die Assertionsanweisung behandelt wird. Dies würde im Releaseversionscode dazu führen, dass alle von myGraphRoutine zurückgegebenen Fehlercodes nicht behandelt würden.