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.

C# Dictionary <string, string>

Hallo,

ich habe ein kleines Problem mit meinem Übersetzungsprogramm. Ich lese 2 Dateien ein und die sollen beide in Listen angegeben werden. Der Schlüssel bleibt gleich nur die Werte ändern sich (einmal auf Englisch, einmal auf Deutsch). Die erste Datei ist Englisch und das funktioniert auch. Ich habe, wenn das Programm durch gelaufen ist, 321 Einträge in der Liste. Wenn ich dann mit der deuten Übersetzung weiter mache, läuft er zwar durch und macht auch alles so wie es soll, nur am Ende kommen keine deutschen Werte hinzu. Sprich er hat weiterhin nur die englische Übersetzung und keine deutschen Werte.

Bin noch in der Ausbildung, und mein Ausbilder meinte das wäre sehr einfach, aber ich finde einfach keinen Fehler, warum er es nicht so macht wie es soll.

Bild vom Quellcode im Anhang. (Die grünen Kommentare bitte ignorieren)

Hoffe ihr könnt mir helfen.

...zur Frage

Was möchtest Du wissen?