Was ist der Unterschied zwischen einem Compiler-Fehler und einem Laufzeitfehler (Java)?
Hallo zusammen,
wie kann man einen Compiler-Fehler von einem Laufzeitfehler unterscheiden? Wie äußern sich die jeweiligen Fehler? Ich frage deshalb, weil ich in einem vorgegeben Code angeben muss, an welcher Stelle Compiler-Fehler und an welcher Laufzeitfehler entstehen. Es geht um 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.