Laufzeitfehler
aus Wikipedia, der freien Enzyklopädie
Laufzeitfehler (engl. run time error) sind Programmfehler eines Computerprogrammes, die sich erst bemerkbar machen, während das Programm ausgeführt wird (sich in seiner Laufzeit befindet). Ungültige oder fehlerhafte Eingaben oder nicht erwartete Werte können diese Fehler hervorrufen. Typische Laufzeitfehler sind auch der Zugriff auf einen geschützten Speicherbereich, fehlende, aber benötigte Parameter (beispielsweise eine Eingabedatei), falscher Umgang mit Datentypen, Division durch Null oder nicht erreichbarer Code.
Compiler erkennen Laufzeitfehler nicht. Da sie erst zur Laufzeit auftreten, kann man sie nicht beheben. Es führt zum Absturz des ausgeführten Programmes, oder unbestimmtes Verhalten durch Zugriff auf inkonsistente Daten (Variablen werden überschrieben, falsche Werte gelesen). Durch klassisches Testen können Laufzeitfehler nur schwer entdeckt werden, allerdings gibt es Methoden durch deren Anwendung man die An- bzw. Abwesenheit von Laufzeitfehlern nachweisen kann (beispielsweise Verifikation) und Tools die diese Methode automatisiert anwendbar machen (beispielsweise PolySpace Verifier). Die einzige wirkliche Möglichkeit Laufzeitfehler zu verhindern, besteht darin, Fehlerquellen vorausschauend auszuschließen, beispielsweise durch eine Feldprüfung und Typisierung.
[Bearbeiten] Typische Beispiele
- Verwendung von Objektverweisen, die bisher nicht auf ein Objekt verweisen, sondern auf „gar nichts“ (z. B. Nullpointer in C)
- fehlerhafte Speicherreservierung – tritt vor allem bei Programmiersprachen auf, die keine automatische Speicherbereinigung durchführen, wie C.
- fehlende Dateien, aus denen das Programm Daten beziehen soll.
- versehentlicher „Angriff“ auf einen Server – durch fehlerhafte Programmierung überflutet das Programm einen Server dermaßen mit Anfragen, dass der Server nicht mehr mithalten kann (siehe auch Ddos-Angriff)
Falsch berechnete Zwischenergebnisse gehören eher in den Bereich der Fehler, die durch einen falsch programmierten Ablauf entstehen.
Auch unerwartete Änderungen an der verfügbaren Hardware, die das Programm weder testen noch selbst beheben oder umgehen kann, können Laufzeitfehler verursachen, zum Beispiel:
- eine Druckerausgabe wird versucht, der Drucker ist jedoch ausgeschaltet, nicht angeschlossen oder hat kein Papier mehr
- Versuch eines Datenbankzugriffs, der Datenbankserver ist jedoch ausgefallen
- ein Versuch, Daten auf einem Wechseldatenträger zu speichern, scheitert daran, dass jemand die Diskette aus dem Laufwerk bzw. die DVD aus dem Brenner genommen hat oder dass der Datenträger schreibgeschützt ist.
- bei verteilten Anwendungen, wo mehrere Rechner gleichzeitig Teile desselben Programmes ausführen, kann einer der Rechner ausgefallen sein. Dadurch fehlen dem restlichen Programm Berechnungsergebnisse.