Fehlerbehandlung |
![]() |
Robustheit und Fehlertoleranz treten bei immer komplexer werdenden Softwaresystemen mehr und mehr in den Vordergrund. Die Basis für ein robustes und fehlertolerantes Softwaresystem ist eine gute Fehlerbehandlung. Zur Erhöhung der Stabilität von Programmen müssen Ausnahmen vom üblichen Programmfluss gezielt behandelt werden. Es müssen Vorkehrungen getroffen werden, die Abstürze durch Ausnahmesituationen vermeiden und Ausnahmen genauso sicher behandeln wie alle anderen fehlerfreien Aktionen.
Es gibt - einmal abgesehen von trivialen Programmen - keine fehlerfreien komplexen Computerprogramme. Darum wählt man bei der Anwendungsentwicklung die Strategie der frühen Fehlererkennung und behandlung. Der Sinn ist der, dass auf einen früh erkannten Programmfehler reagiert werden kann, um somit den möglichen Schaden zu minimieren. Würde ein Programmfehler beispielsweise nicht erkannt und behandelt, könnte man sich vorstellen, dass das fehlerhafte Programm bestenfalls einfach abstürzt und damit beendet wird. Eine fatale Folge eines Programmfehlers ist, dass dieser unbemerkt auftritt und zu falschen Ergebnissen führt und somit zum Beispiel korrupte Daten in die Datenbank einträgt und damit mühsam gepflegte Daten zerstört.
Robustheit |
![]() ![]() |
Bei der Entwicklung von
wurde ein Konzept zur Fehlerfrüherkennung und deren Eliminierung
umgesetzt. Auf Programmfehler wird sofort reagiert, nachdem sie
entdeckt werden konnten. Sollte es einmal zu einem erkannten
Programmfehler kommen, kann dieser nachvollzogen werden, wenn die
sogenannte Tracedatei
aktiviert war. Bei dieser Tracedatei
handelt es sich um eine technische Datei, in der der gesamte
Programmverlauf aufgeschrieben wird. Kommt es einmal zu einem
Programmfehler, so kann anhand der Tracedatei festgestellt
werden, wie es dazu kam.
Aber auch dann, wenn die Tracedatei nicht eingeschaltet ist, wird auf Programmfehler so früh wie möglich reagiert. Fehler werden gefangen und mit einem Fehlerdialog an den Anwender gemeldet. Die aktuell laufende Aktion wird abgebrochen und die betroffenen Daten in der Datenbank zurückgesetzt.
Exceptionhandling |
![]() ![]() |
Bei der Speicherung eines Bildes in der Datenbank muss auch ein Thumbnail
erstellt werden. Hierbei werden Bilder in verschiedenen Formaten gelesen
und neue Bilder in kleinerer Auflösung erzeugt. Bei dieser komplexen
Verarbeitung kann es zu einem Programmfehler kommen, zum Beispiel
wenn die zu speichernde Datei korrupt ist. Obwohl sehr hoher Aufwand betrieben
wurde, solche Programmfehler zu vermeiden, lassen sie sich nicht völlig
ausschließen. Damit es bei einer solchen Verarbeitung aber auf keinen
Fall zu einem Bildverlust kommt, werden Exceptions und vom Prozessor
generierte Signale (sigsegv, sigill, sigabrt, etc.) abgefangen und
darauf entsprechend reagiert. Wenn es nun bei der Erstellung eines Thumbnails
oder beim Rotieren eines Bildes zu einem solchen Fehler kommen sollte, fängt
diesen Fehler ab, erzeugt eine entsprechende Fehlermeldung mit der
der Benutzer darauf hingewiesen wird, dass kein Thumbnail erstellt
bzw. dass das Bild nicht rotiert werden konnte.
![]() |