LaufzeitfehlerLaufzeitfehler (englisch runtime error) sind in der Informationstechnik Fehler, die während der Laufzeit eines Computerprogramms auftreten. BeschreibungLaufzeitfehler führen zum Absturz des ausgeführten Programms, zu falschen Ergebnissen oder zu nicht vorhersehbarem Verhalten des Programms. Die Ursachen dafür können sehr unterschiedlich sein; beispielsweise wenn Variablen mit falschen/inkonsistenten Daten überschrieben oder gefüllt werden – die in nachfolgenden Befehlen zu Fehlern führen. AbgrenzungNicht als Laufzeitfehler gelten Programmfehler, die bereits während der Entwicklung des Programmcodes, z. B. von Entwicklungswerkzeugen wie dem Compiler, festgestellt werden. Sind dies schwerwiegende, zum Beispiel grobe Syntaxfehler, so wird in der Regel kein ausführbarer Code erzeugt, das Programm kann deshalb nicht ausgeführt werden. Abweichende BedeutungenIn der Literatur treten darüber hinaus sich in Details unterscheidende Beschreibungen für den Begriff „Laufzeitfehler“ auf:
Gemäß dem Leitfaden Fehlerklassifikation für Software der BITKOM[9] zählt das Auftreten von Laufzeitfehlern zu den Fehlern der Klasse A („sehr schwere Fehler, die Anwendung ist nicht lauffähig ...“). Eine Möglichkeit, Laufzeitfehler zu verhindern, besteht darin, Fehlerquellen vorausschauend auszuschließen, beispielsweise durch eine Feldprüfung und Typisierung. Einige Programmiersprachen sehen ergänzend die Möglichkeit vor, Laufzeitfehler als Ausnahmesituationen zu behandeln, um sinnvoll auf unvorhergesehene Ereignisse reagieren zu können. FehleridentifikationLaufzeitfehler werden in vielen Systemumgebungen zur eindeutigen Benennung – und als Verweise in einschlägige Benutzerdokumentationen – mit Nummern gekennzeichnet, z. B. Laufzeitfehler 13 (Typen unverträglich ...), Laufzeitfehler 3190 (zu viele Felder definiert). Auch werden solche Nummerierungen häufig bei Anfragen in Internet-Chats als Referenz benutzt. Beim Auftreten eines Laufzeitfehlers erzeugt das Betriebssystem in der Regel einen Speicherdump, aus dem ein Softwareentwickler meist nähere Informationen zum Fehler und seiner Ursache erkennen kann. Typische BeispieleDie meisten der nachfolgend beschriebenen Fehler würden bei angemessenem Testumfang bereits im Softwaretest erkannt werden und nach der Programmbereinigung nicht mehr als Laufzeitfehler auftreten:
Auch Änderungen an der Systemumgebung, z. B. der Hardware, können, wenn sie in der Software nicht berücksichtigt sind, Laufzeitfehler verursachen, zum Beispiel:
Bedeutung und FolgenEntsprechend der Vielfalt von Ursachen für Laufzeitfehler kann auch die Bandbreite hinsichtlich der Bedeutung und der Folgen von Laufzeitfehlern sehr groß sein. Bestimmend dafür sind zum Beispiel folgende Aspekte:
Ein Laufzeitfehler beim Softwaretest gilt z. B. im Debugmodus als Normalfall oder er kann absichtlich herbeigeführt werden, zum Beispiel um eine Ausnahmebehandlung zu testen. Im Produktivbetrieb ist er dagegen in der Regel immer ein unerwünschtes, ggf. kritisches Ereignis, das zu erheblichen Störungen führen kann; siehe auch Programmfehlerfolgen. Auch unterscheiden sich Laufzeitfehler im Hinblick auf ihre Folgen danach, ob sie in einem privaten Computerumfeld (z. B. in einem Computerspiel) oder in einem hochsensiblen Unternehmensumfeld auftreten.
Manche Laufzeitfehler können, abhängig von ihrer Art sehr schnell erkannt und auch behoben werden. Beispiel: Wenn eine Ausgabedatei in den Ausführungsspezifikationen (JCL etc.) nicht definiert war. In anderen Fällen muss zur Fehleranalyse ggf. ein Softwareentwickler eingeschaltet werden. Muss zur Fehlerbehebung eine neue Version der Software bereitgestellt werden, so bedarf dies je nach Situation umfangreicher administrativer Maßnahmen. In zeitkritischen Anwendungen kommt zur Vermeidung von Problemen/Schäden in den durch die Anwendung unterstützten Prozessen der schnellen Analyse und Behebung eine hohe Bedeutung zu.
Wenn zum Zeitpunkt des Laufzeitfehlers bereits Ergebnisse erzeugt waren, muss die Verarbeitung nach der Fehlerbehebung exakt an einer bestimmten Stelle des Programms fortgesetzt oder Ergebnisse müssen in ihrer Wirkung (z. B. bei Veränderungen in Datenbeständen) zurückgesetzt werden (können); siehe auch Rollback. Einzelnachweise
|