Die DIN EN ISO 9000:2005 definiert einen Fehler als „Merkmalswert, der die vorgegebenen Forderungen nicht erfüllt“ und als „Nichterfüllung einer Anforderung“. Beim Programmieren können drei verschiedene Arten von Fehlern auftreten:
Der Laufzeitfehler, der vom Compiler nicht bemerkt wurde und einen Abbruch des Programmablaufs hervorruft
Der logische Fehler, der weder beim Kompilieren noch zur Laufzeit zu einem Abbruch führt; allerdings erfüllt das Programm nicht seine Anforderungen.
In der Reihenfolge steigt auch die Schwierigkeit, den Fehler zu entdecken. Bei einem Syntaxfehler wird die fehlerhafte Zeile vom Compiler normalerweise markiert und eine Meldung angezeigt, was vermutlich nicht stimmt.
Bei einem Programmabbruch zur Laufzeit wird häufig auch die fehlerhafte Zeile angezeigt, sofern das Programm aus einer Entwicklungsumgebung heraus gestartet worden ist.
Bei der Suche nach logischen Fehlern hilft der in einer Entwicklungsumgebung integrierte Debugger. Mit diesem Werkzeug kann der Programmablauf an einer bestimmten Stelle im Quellcode angehalten werden. Von diesem Punkt aus kann schrittweise verfolgt werden, wohin die Programmausführung springt, welche Befehle durchlaufen werden, welche Werte Variablen haben usw.