wake-up-neo.net

Was ist der Unterschied zwischen Laufzeitfehler und Compilerfehler?

In einer meiner prof-Folien zum Thema Ploymorphismus sehe ich diesen Code mit einigen Kommentaren:

discountVariable =              //will produce
  (DiscountSale)saleVariable;//run-time error
discountVariable = saleVariable //will produce
                                //compiler error

Wie Sie sehen, heißt es in der ersten Casting-Anweisung, dass sie einen run-time -Fehler erzeugt, und in der anderen gibt es einen Compiler-Fehler an.

Was macht diese Fehler? und wie unterscheiden sie sich?

40
AbdullahR

Ein Laufzeitfehler tritt nur dann auf, wenn der Code tatsächlich ausgeführt wird .. Diese sind am schwierigsten - und führen zu Programmabstürzen und Fehlern in Ihrem Code, die möglicherweise schwer zu finden sind.

Ein Beispiel könnte der Versuch sein, einen String: "Hallo" in eine Ganzzahl zu konvertieren:

string helloWorld = "hello";
int willThrowRuntimeError = Convert.ToInt32(helloWorld);

Der Compiler sieht dies möglicherweise nicht als Problem an, aber beim Ausführen wird ein Fehler ausgegeben.

Compiler-Fehler sind auf Ungenauigkeiten im Code zurückzuführen. Der Compiler gibt einen Fehler aus, um Sie auf etwas aufmerksam zu machen, das nicht kompiliert werden kann, und kann daher nicht ausgeführt werden.

Ein Beispiel für einen Compiler-Fehler wäre:

int = "this is not an int";

Hoffentlich hilft das.

41
jwddixon

Während der Ausführung des Programms tritt ein Laufzeitfehler auf. Ein Compiler-Fehler tritt auf, wenn Sie versuchen, den Code zu kompilieren. 

Wenn Sie Ihren Code nicht kompilieren können, handelt es sich um einen Compiler-Fehler. 

Wenn Sie Ihren Code kompilieren und ausführen, schlägt er jedoch während der Ausführung fehl, das ist die Laufzeit.

14
James Montagne

Kompilierzeitfehler bezieht sich auf Syntax und Semantik. Zum Beispiel, wenn Sie Vorgänge ausführen, die unterschiedliche Typen betreffen. Beispiel: Hinzufügen eines Strings mit einem int oder Teilen eines Strings durch einen Real. (lies den letzten Absatz du !!!)

Laufzeitfehler werden bei Ausführung des Programms erkannt. Zum Beispiel Division durch Null. Der Compiler kann nicht wissen, ob die Operation x/a-b bis zur Ausführung zur Division durch Null führt.

Dies ist eine sehr breite Erklärung. Es gibt viele intelligente Compiler, und es ist auch möglich, interne Castings zwischen verschiedenen Typen auszuführen, was zu sinnvollen Operationen führt. Es ist möglich, Code vorab zu kompilieren und Laufzeitfehler anzuzeigen, auch wenn der Code nicht ausgeführt wird. 

Siehe auch diesen Link: Runtime vs Compile Time

7
Kani

Fehler bei der Kompilierungszeit bedeutet, dass der Compiler weiß, dass discountVariable = saleVariable mit einem Semikolon abgeschlossen sein muss, da unter discountVariable = saleVariable;so ein Fehler beim Kompilieren des Codes ausgegeben wird.

Laufzeitfehler bedeutet, dass der Fehler zur Laufzeit auftritt, denn obwohl CastevariableVariable in DiscountVariable umgewandelt wird, kann die Besetzung nicht ausgeführt werden, da sie sich im Typ unterscheiden. 

2
CodeBlue

Fehler beim Kompilieren sind Syntax- und Semantikfehler. 

Laufzeitfehler sind in erster Linie Logikfehler. Aufgrund von etwas, das der Programmierer übersehen hat, stürzt das Programm ab, z. Division durch 0, Zugriff auf eine Variable ohne vorheriges Initialisieren usw. 

2
Hadi

ich glaube, Sie haben bereits die allgemeine Beschreibung des Unterschieds. Speziell in dem Code, den Sie im OP angezeigt haben,

  • In einer zweiten Anweisung vergleicht der Compiler die Typen auf LHS und RHS und findet keine implizite Umwandlung möglich, sodass der Fehler ausgegeben wird.
  • die erste Anweisung wird vom Compiler als gleich angesehen, aber der Programmierer wandelt den Typ explizit um. Das ist so gut wie der Hinweis, dass ich weiß, was ich mache. Natürlich vertraut der Compiler Ihnen und gibt Ihnen keine Fehler.
1
Kashyap

Wenn Sie Google verwenden, erhalten Sie Folgendes:

Fehler beim Kompilieren ist ein Fehler, der ein Kompilieren eines Java-Programms verhindert, beispielsweise einen Syntaxfehler, eine nicht gefundene Klasse, einen ungültigen Dateinamen für die definierte Klasse, einen möglichen Genauigkeitsverlust beim Mischen verschiedener Java-Datentypen usw.

Ein Laufzeitfehler bedeutet einen Fehler, der auftritt, während das Programm ausgeführt wird. Um mit dieser Art von Fehlern fertig zu werden, definieren Java Ausnahmen. Ausnahmen sind Objekte, die einen anormalen Zustand im Programmablauf darstellen. Es kann entweder aktiviert oder deaktiviert sein.

http://wiki.answers.com/Q/Difference_between_run_time_error_and_compile_time_error_in_Java

1
user647772

Dies liegt daran, dass der Compiler den Objekttyp "saleVariable" nicht kennt, bis dieser Wert tatsächlich eingestellt wurde, wenn das Programm ausgeführt wird.

Sie zwingen, was auch immer in salesVariable enthalten ist, in den Typ DiscountSale. Dies wird als unsicher angesehen und kann erst zur Laufzeit ausgewertet werden.

1
bigamil

Compiler-Fehler sind auf Ungenauigkeiten im Code zurückzuführen. Der Compiler gibt einen Fehler aus, um Sie auf etwas aufmerksam zu machen, das nicht kompiliert werden kann, und kann daher nicht ausgeführt werden.

Bsp: - MethodOverloading

class OverloadingTest {
    void sum(int a, long b) {
        System.out.println("a method invoked");
    }

    void sum(long a, int b) {
        System.out.println("b method invoked");
    }

    public static void main(String args[]) {
        OverloadingTest obj = new OverloadingTest();
        obj.sum(200, 200);// now ambiguity
    }
}

Laufzeitfehler sind Fehler, die bei der Ausführung des Programms erkannt werden. Zum Beispiel Division durch Null. Der Compiler kann nicht wissen, ob die Operation x/a-b bis zur Ausführung zur Division durch Null führt

0
Nikhil Kumar

Compilation/Kompilierzeit/Syntax/Semantische Fehler: Kompilierungs- oder Kompilierzeitfehler sind auf Grund von Tippfehlern aufgetreten. Wenn wir nicht der korrekten Syntax und Semantik einer Programmiersprache folgen, werden Compilierfehler vom Compiler ausgelöst . Sie lassen nicht zu, dass Ihr Programm eine einzige Zeile ausführt, bis Sie alle Syntaxfehler entfernen oder die Kompilierzeitfehler debuggen.
Beispiel: Ein Semikolon in C fehlt oder int als Int falsch eingegeben wird.

Laufzeitfehler: Laufzeitfehler sind die Fehler, die generiert werden, wenn das Programm ausgeführt wird. Diese Art von Fehlern führt dazu, dass sich Ihr Programm unerwartet verhält oder das Programm sogar abbricht. Sie werden oft als Ausnahmen bezeichnet.
Beispiel: Angenommen, Sie lesen eine Datei, die nicht vorhanden ist. Dies führt zu einem Laufzeitfehler. 

Lesen Sie mehr über alle Programmierfehler hier

0
Pankaj Prakash