web-dev-qa-db-fra.com

Quelle est la différence entre une erreur d’exécution et une erreur du compilateur?

Dans l'une de mes diapositives sur le ploymorphism, je vois ce code avec quelques commentaires:

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

Comme vous pouvez le constater, il est dit dans la première instruction de casting qu'il produira run-time error et dans l'autre il indiquera qu'il produira erreur du compilateur .

Qu'est-ce qui fait ces erreurs? et comment ils diffèrent les uns des autres?

40
AbdullahR

Une erreur d'exécution ne se produira que lorsque le code est en cours d'exécution ... Ce sont les plus difficiles - et conduisent à des plantages de programmes et des bugs dans votre code qui peuvent être difficiles à localiser.

Un exemple pourrait être de tenter de convertir une chaîne: "hello" en un entier:

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

Le compilateur peut ne pas considérer cela comme un problème, mais une erreur sera générée lors de l'exécution.

Les erreurs du compilateur sont dues à des inexactitudes dans le code, le compilateur lançant une erreur pour vous avertir de quelque chose qui ne sera pas compilé, et ne peut donc pas être exécuté.

Un exemple d'erreur du compilateur serait:

int = "this is not an int";

J'espère que cela pourra aider.

41
jwddixon

Une erreur d'exécution se produit lors de l'exécution du programme. Une erreur du compilateur se produit lorsque vous essayez de compiler le code. 

Si vous ne parvenez pas à compiler votre code, c'est une erreur du compilateur. 

Si vous compilez et exécutez votre code, mais qu'il échoue lors de l'exécution, il s'agit de l'exécution.

14
James Montagne

Compile time errors fait référence à la syntaxe et à la sémantique. Par exemple, si vous effectuez des opérations impliquant différents types. Ex: ajouter une chaîne avec un int ou diviser une chaîne par un réel. (lisez le dernier paragraphe tu !!!)

Les erreurs d'exécution sont celles détectées lors de l'exécution du programme. Par exemple, division par zéro. Le compilateur ne peut pas savoir si l'opération x/a-b entraînera une division par zéro jusqu'à l'exécution.

Ceci est une très large explication. Il existe de nombreux compilateurs intelligents et il est également possible d'effectuer une conversion interne entre différents types conduisant à des opérations sensées. Il est possible de pré-compiler le code et de voir quelques erreurs d'exécution même si le code n'est pas exécuté. 

Reportez-vous également à ce lien: Runtime vs Compile Time

7
Kani

Erreur de compilation signifie que le compilateur sait que discountVariable = saleVariable doit se terminer par un point-virgule comme ci-dessousdiscountVariable = saleVariable; afin de générer une erreur lors de la compilation du code.

Erreur d'exécution signifie que l'erreur se produira au moment de l'exécution, car même si vous convertissez saleVariable dans discountVariable, la distribution ne peut pas prendre car leur type diffère. 

2
CodeBlue

Les erreurs de compilation sont des erreurs de syntaxe et de sémantique. 

Les erreurs d'exécution sont principalement des erreurs de logique. En raison de quelque chose que le programmeur a oublié, le programme se bloque, par exemple. division par 0, accéder à une variable sans l'initialiser, etc. 

2
Hadi

pense que vous avez déjà la descendance générale de quelle est la différence. Plus précisément dans le code que vous avez montré dans l'OP,

  • Dans la deuxième instruction, le compilateur compare les types sur LHS et RHS et ne trouve aucune conversion implicite possible, ce qui donne l'erreur.
  • la première instruction est vue par le compilateur comme étant la même chose, mais ici le programmeur jette explicitement le type, ce qui revient à dire au compilateur que je sais ce que je fais et bien sûr, le compilateur vous fait confiance et ne vous donne aucune erreur.
1
Kashyap

Si vous utilisiez Google, vous obtiendriez ceci:

Une erreur de compilation est un type d'erreur empêchant un programme Java de se compiler comme une erreur de syntaxe, une classe non trouvée, un nom de fichier incorrect pour la classe définie, une perte de précision possible lorsque vous mélangez différents types de données Java, etc.

Une erreur d'exécution signifie une erreur qui survient pendant l'exécution du programme. Pour traiter ce type d’erreurs, Java définit des exceptions. Les exceptions sont des objets représente une condition anormale dans le flux du programme. Il peut être coché ou décoché.

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

1
user647772

C'est parce que le compilateur ne connaît pas le type d'objet de "saleVariable" jusqu'à ce que cette valeur ait été définie lors de l'exécution du programme.

Tout ce qui se trouve dans salesVariable est forcé dans le type DiscountSale. Ceci est considéré comme dangereux et ne peut pas être évalué avant l'exécution.

1
bigamil

Les erreurs du compilateur sont dues à des inexactitudes dans le code, le compilateur lançant une erreur pour vous avertir de quelque chose qui ne sera pas compilé, et ne peut donc pas être exécuté.

Ex: - 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
    }
}

Les erreurs d'exécution sont celles détectées lors de l'exécution du programme. Par exemple, division par zéro. Le compilateur ne peut pas savoir si l'opération x/a-b entraînera une division par zéro jusqu'à l'exécution

0
Nikhil Kumar

Compilation/Temps de compilation/Syntaxe/Erreurs sémantiques: Les erreurs de compilation ou de compilation sont des erreurs dues à une faute de frappe. Si nous ne suivons pas la syntaxe et la sémantique correctes d'un langage de programmation, les erreurs de compilation sont émises par le compilateur. . Ils ne laisseront pas votre programme exécuter une seule ligne jusqu'à ce que vous supprimiez toutes les erreurs de syntaxe ou que vous ne déboguiez pas les erreurs de compilation.
Exemple: Manquer un point-virgule en C ou saisir int en tant que Int.

Erreurs d'exécution: Les erreurs d'exécution sont les erreurs générées lorsque le programme est en cours d'exécution. Ces types d'erreurs provoqueront un comportement inattendu de votre programme, voire le tueront. Ils sont souvent appelés des exceptions.
Exemple: Supposons que vous lisiez un fichier qui n’existe pas, ce qui entraînera une erreur d’exécution. 

En savoir plus sur tous erreurs de programmation ici

0
Pankaj Prakash