Quelle est la différence entre l'erreur et l'erreur du compilateur? [dupliquer]
cette question a déjà une réponse ici:
- Runtime vs compiler time 24 réponses
dans une de mes diapositives sur le ploymorphisme, je vois ce morceau de code avec 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 le premier casting déclaration qu'il va produire run-time erreur et dans l'autre il dit qu'il va produire erreur de compilateur .
Qu'est-ce qui fait ces erreurs? et comment ils diffèrent les uns des autres?
10 réponses
Une erreur d'exécution se produit uniquement lorsque le code est effectivement en cours d'exécution. Ce sont les plus difficiles et mener à des plantages et bugs dans votre code qui peuvent être difficiles à dépister.
Un exemple pourrait être d'essayer de convertir une chaîne de caractères: "bonjour" dans un entier:
string helloWorld = "hello";
int willThrowRuntimeError = Convert.ToInt32(helloWorld);
le compilateur peut ne pas voir cela comme un problème mais quand lancer une erreur sera lancé.
Les erreurs de compilationsont dues à des inexactitudes dans le code, lorsque le compilateur lance une erreur pour vous alerter de quelque chose qui ne sera pas compilé, et ne peut donc pas être exécuté.
un exemple d'erreur de compilation serait:
int = "this is not an int";
Espère que ça aide.
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 n'êtes pas capable de compiler votre code, c'est une erreur de compilation.
si vous compilez et exécutez votre code, mais qu'il échoue pendant l'exécution, c'est l'exécution.
compiler time errors renvoie à la syntaxe et à la sémantique. Par exemple, si vous effectuez des opérations qui impliquent différents types. Ex: ajout d'une chaîne avec un int, ou division d'une chaîne par un réel. (lire le dernier paragraphe tu!!!)
les erreurs d'Exécution sont celles qui sont détectées lorsque le programme s'exécuter. Par exemple, la division par zéro. Le compilateur ne peut pas savoir si l'opération x/a-b va conduire à la division par zéro jusqu'à ce que exécution.
c'est une explication très large . Il existe de nombreux compilateurs intelligents, et, aussi, il est possible de faire des moulages internes parmi différents types qui conduisent à des opérations qui ont du sens. Est-il possible de pré-compiler du code et de voir certains les erreurs d'exécution même si le code n'est pas exécuté.
reportez-vous à ce lien: Runtime vs moment de la Compilation
compiler les erreurs de temps sont des erreurs de syntaxe et de sémantique.
les erreurs de temps D'exécution sont principalement des erreurs de logique. En raison de quelque chose que le programmeur a négligé, le programme s'écrase par exemple division par 0, accès à une variable sans l'initialiser d'abord, etc.
erreur de temps de compilation signifie que le compilateur sait que discountVariable = saleVariable
doit se terminer par un point-virgule comme ci-dessous discountVariable = saleVariable;
ainsi il lancera une erreur lorsque vous compilez le code.
Run Time error signifie que l'erreur se produira au moment de l'exécution, parce que même si vous moulez saleVariable dans discountVariable, la distribution ne peut pas prendre parce qu'ils diffèrent dans le type.
C'est parce que le compilateur ne connaît pas le type d'objet de "saleVariable" tant que cette valeur n'a pas été définie quand le programme est en cours d'exécution.
vous forcez tout ce qui est dans salesVariable dans le type DiscountSale ce qui est considéré comme dangereux et ne peut pas être évalué jusqu'à l'exécution.
pense que vous avez déjà le desc général de quelle est la différence. Spécifiquement 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 coulée implicite possible ainsi il donne l'erreur.
- la première déclaration est considérée par le compilateur comme la même, mais ici le programmeur affiche explicitement le type, ce qui est aussi bien que dire au compilateur que je sais ce que je fais et bien sûr le compilateur confiance en vous et vous donne aucune erreur.
si vous utilisiez Google, vous obtiendriez ceci:
erreur de temps de compilation est tout type d'erreur qui empêche un programme java Compiler comme une erreur de syntaxe, une classe pas trouvé, un nom de fichier mauvais pour la classe définie, une perte possible de précision lorsque vous mélangez différents types de données java et ainsi de suite.
une erreur d'exécution signifie une erreur qui se produit pendant que le programme est en cours d'exécution. Pour traiter ce genre d'Erreurs java define Exceptions. Les Exceptions sont des objets qui représentent une condition anormale dans le flux du programme. Il peut être vérifié ou non.
http://wiki.answers.com/Q/Difference_between_run_time_error_and_compile_time_error_in_java
sont dues à des inexactitudes dans le code, où le compilateur envoie une erreur pour vous alerter sur 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 Run Time 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 conduit à une division par zéro jusqu'à l'exécution
Compilation/Compilation/Syntaxe/Sémantique des erreurs: de la Compilation ou de la compilation des erreurs sont erreur s'est produite en raison de faute de frappe, si on ne suit pas la bonne syntaxe et la sémantique d'un langage de programmation, puis la compilation des erreurs générées 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 jusqu'à ce que vous déboguiez les erreurs de compilation.
Exemple: absence d'un point-virgule en C ou int
est confondu avec Int
.
erreurs d'Exécution: erreurs d'Exécution sont les erreurs qui sont générés lorsque le programme est en cours d'exécution. Ces types d'erreurs feront que votre programme se comporte de façon inattendue ou peuvent même tuer votre programme. Ils sont souvent qualifiés d'Exceptions.
Exemple: supposons que vous lisiez un fichier qui n'existe pas, il en résultera une erreur d'exécution.
lire plus à propos de tous les erreurs de programmation ici