Was ist der Unterschied zwischen einem Compiler-Fehler und einem Laufzeitfehler (Java)?

1 Antwort

Compiler-Fehler: 

Das bedeutet, dass der Java-Compiler deinen Code nicht kompilieren kann. Das liegt häufig an Syntax-Fehlern, z.B:

  • Fehlende Klammern
  • Fehlendes Semikolon
  • Zugriff auf private Eigenschaften oder Methoden aus anderen Klassen

Ein Bespiel:

int i = "10";

Das ist natürlich kein Integer und kann deshalb nicht von Javac kompiliert werden.

Compiler-Fehler sind also solche, die schon vor der Ausführung des Programms deutlich sind.

Laufzeit-Fehler:

Dabei konnte der Code kompiliert werden. Er ist also syntaktisch korrekt. Diese Fehler treten auf, während das Programm ausgeführt wird (at runtime). Bei einem runtime error wird es an einem bestimmten Punkt abgebrochen. Beispiele:

  • Division durch null
  • NullPointerException (Variable nutzen, die null ist)
  • Array-Indizes nutzen, die außerhalb der bounds liegen
  • Nutzung nicht verfügbarer Ressourcen wie Dateien

Ein Codebeispiel:

double x = 0; // könnte z.B. eine Nutzereingabe sein
double d = 5/x;

Letztendlich fallen Compiler-Fehler schon beim kompilieren auf, d.h. der Code ist ungültig. Laufzeit-Fehler dagegen treten nicht unbedingt bei jeder Ausführung des Programms auf, sondern oft in bestimmten Situationen (ungültige Nutzereingaben, keine Internetverbindung, etc.). Deshalb ist es wichtig, diese Ausnahmen (Exceptions) per try/catch-Konstrukt abzufangen sowie zu verarbeiten.