63 votes

Quelle est la différence entre une erreur d'exécution et une erreur de compilation ?

Dans l'une des diapositives de mon professeur sur le ploymorphisme, je vois ce morceau de code accompagné de quelques commentaires :

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

Comme vous pouvez le voir, il est dit dans la première déclaration de casting qu'il produira temps d'exécution et dans l'autre il est dit qu'il produira erreur de compilation .

Quelles sont les causes de ces erreurs ? et en quoi diffèrent-elles les unes des autres ?

66voto

DIXONJWDD Points 1156

Une erreur d'exécution ne se produit que lorsque le code est en cours d'exécution. Ce sont les plus difficiles - et elles conduisent à des plantages de programme et à des bogues dans votre code qui peuvent être difficiles à repérer.

Un exemple pourrait être d'essayer de convertir une chaîne de caractères : "hello" en un nombre entier :

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

Le compilateur peut ne pas voir cela comme un problème, mais lors de l'exécution, une erreur sera déclenchée.

Les erreurs de compilation sont dues à des inexactitudes dans le code. Le compilateur génère une erreur pour vous avertir que quelque chose ne sera pas compilé et ne pourra donc pas être exécuté.

Un exemple d'erreur de compilation serait :

int = "this is not an int";

J'espère que cela vous aidera.

18voto

James Montagne Points 44517

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

Si vous ne parvenez pas à compiler votre code, il s'agit d'une erreur de compilation.

Si vous compilez et exécutez votre code, mais qu'il échoue en cours d'exécution, il s'agit d'un runtime.

12voto

Kani Points 642

Erreurs de compilation fait référence à la syntaxe et à la sémantique. Par exemple, si vous effectuez des opérations qui impliquent différents types. Ex : additionner une chaîne avec un int, ou diviser une chaîne par un réel. (lis le dernier paragraphe tu !!!)

Erreurs de temps de fonctionnement sont celles qui sont détectées lors de l'exécution du programme. Par exemple, la division par zéro. Le compilateur ne peut pas savoir si l'opération x/a-b conduira à une division par zéro avant l'exécution.

Il s'agit d'une très large l'explication. Il existe de nombreux compilateurs intelligents, et il est également possible d'effectuer un casting interne entre différents types, ce qui conduit à des opérations qui ont un sens. Il est possible de pré-compiler du code et de voir des erreurs d'exécution même si le code n'est pas exécuté.

Consultez également ce lien : Temps d'exécution et temps de compilation

3voto

Hadi Points 376

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

Les erreurs d'exécution sont principalement des erreurs de logique. À cause d'un élément que le programmeur a négligé, le programme plante, par exemple une division par 0, l'accès à une variable sans l'initialiser au préalable, etc.

3voto

CodeBlue Points 2816

Une erreur de compilation signifie que le compilateur sait que discountVariable = saleVariable doit se terminer par un point-virgule comme ci-dessous discountVariable = saleVariable; donc il y aura une erreur lorsque vous compilerez le code.

Run Time error signifie que l'erreur se produira au moment de l'exécution, car même si vous effectuez un casting de saleVariable en discountVariable, le cast ne peut pas avoir lieu car ils sont de type différent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X