2012-02-27 18 views
29

En una de mis diapositivas prof en ploymorphism, veo este pedazo de código con un par de comentarios:¿Cuál es la diferencia entre el error de tiempo de ejecución y el error del compilador?

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

Como se puede ver, se dice en la primera declaración de fundición que va a producir Run- error de tiempo y en el otro dice que producirá error de compilador.

¿Qué hace estos errores? y cómo difieren el uno del otro?

+28

Vamos chicos. El tipo está tratando de aprender, los votos negativos son innecesarios. – JohnFx

+4

No importa si se ha dirigido a mi ejemplo o no, lo que realmente importa es que obtuve la respuesta con claridad. Ese tipo lo explicó de una manera simple que puede ser fácil de entender para un programador ingenuo como yo. – AbdullahR

+0

¿Leyó el http://stackoverflow.com/faq? –

Respuesta

33

Una carrera sólo se producirá cuando el código se ejecuta realmente. Estos son los más difíciles y conducen a fallas y errores del programa en su código que pueden ser difíciles de rastrear.

Un ejemplo podría estar tratando de convertir una cadena: "hola" en un entero:

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

El compilador puede no ver esto como un problema, pero cuando se ejecuta se produce un error.

Los errores del compilador se deben a imprecisiones en el código, donde el compilador arroja un error para alertarlo sobre algo que no se compilará y, por lo tanto, no se puede ejecutar.

Un ejemplo de un error de compilación sería:

int = "this is not an int"; 

Espero que ayude.

0

Si desea utilizar Google, se obtendría la siguiente:

error de tiempo

Compilar es cualquier tipo de error que evita que un programa Java compila como un error de sintaxis, una clase que no se encuentra, una mala archivo nombre para la clase definida, una posible pérdida de precisión cuando se mezclan diferentes tipos de datos Java, etc.

Un error de tiempo de ejecución significa un error que ocurre mientras el programa se está ejecutando. Para manejar este tipo de errores, java define Excepciones. Las excepciones son objetos que representan una condición anormal en el flujo del programa. Se puede marcar o desmarcar.

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

+2

-1 No usó Google, preguntó aquí. Al menos ate el texto pegado en su ejemplo. –

+0

Ahora usando los enlaces de Google a este ... jaja –

11

un error de ejecución ocurre durante la ejecución del programa. Se produce un error de compilación cuando intenta compilar el código.

Si no puede compilar el código, se trata de un error del compilador.

Si compila y ejecuta su código, pero luego falla durante la ejecución, eso es tiempo de ejecución.

+1

En su ejemplo, 'discountVariable' es de tipo declarado' DiscountSale' y 'saleVariable' es de otro tipo. Cuando intenta asignar el valor de uno al otro con la línea 'discountVariable = saleVariable', esto provoca un error de compilación. Si pones el molde en su lugar '(DiscountSale)', esto le dice al compilador que está bien. Luego se rompe cuando lo ejecuta porque 'saleVariable' no es realmente del tipo' DiscountSale'. –

+1

+1 porque esta es la mejor respuesta a la pregunta: ¿Cuál es la diferencia entre un error de tiempo de ejecución y un error del compilador? Sin embargo, sería mucho más feliz si la respuesta abordara el ejemplo específico ofrecido por el PO. –

1

Es porque el compilador no conoce el tipo de objeto "saleVariable" hasta que ese valor realmente se haya establecido cuando el programa se está ejecutando.

Está forzando a que lo que está en salesVariable en el tipo DiscountSale esto se considera inseguro y no se puede evaluar hasta el tiempo de ejecución.

+0

No es un +1 porque "el compilador no conoce el tipo de objeto de saleVariable". Eso no es cierto. El compilador conoce el tipo; es simplemente incompatible con DiscountSale. –

+0

Tienes razón, estaba pensando en eso en el contexto de si estaba haciendo algo como e.DataItem – bigamil

2

Error de tiempo de compilación significa que el compilador sabe que discountVariable = saleVariable debe terminar con un punto y coma como se indica a continuación discountVariable = saleVariable;, por lo que arrojará un error al compilar el código.

Error de tiempo de ejecución significa que el error ocurrirá en tiempo de ejecución, porque aunque está lanzando saleVariable en discountVariable, el molde no puede tomar porque difieren en el tipo.

5

Error de tiempo de compilación se refiere a la sintaxis y la semántica. Por ejemplo, si realiza operaciones que involucran diferentes tipos. Ej: agregar una cadena con un int, o dividir una cadena por un real. (lea el último párrafo ¡¡¡!!!)

Los errores de tiempo de ejecución son aquellos que se detectan cuando se ejecuta el programa. Por ejemplo, división por cero. El compilador no puede saber si la operación x/a-b llevará a la división por cero hasta la ejecución.

Esta es una explicación muy amplia . Hay muchos compiladores inteligentes y, también, es posible hacer fundidos internos entre diferentes tipos que conducen a operaciones que tienen sentido.Es posible precompilar el código y ver algunos errores de tiempo de ejecución, incluso si el código no se ejecuta.

se refieren a este enlace también: error de tiempo Runtime vs Compile time

1

cree que ya tiene la descripción general de la diferencia. Específicamente en el código que ha mostrado en el PO,

  • En segundo comunicado, compilador compara los tipos de LHS y RHS y no encuentra ninguna conversión implícita posible por lo que da el error.
  • El compilador considera que el primer enunciado es el mismo, pero aquí el programador emite explícitamente el tipo, que es tan bueno como decirle al compilador que sé lo que estoy haciendo y, por supuesto, el compilador confía en usted y no le da ningún error.
+0

+1 tarde en la fiesta, pero esto es útil –

0

errores del compilador son fruto de errores en el código, en el que el compilador genera un error para que le avise a algo que no se compilará, y por lo tanto no se puede ejecutar.

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

errores de tiempo de ejecución son los que se detecta cuando el programa se ejecuta. Por ejemplo, división por cero. El compilador no puede saber si la operación x/voluntad ab conduce a la división por cero, hasta la ejecución

0

compilación/tiempo de compilación/Sintaxis/errores semánticos: se ha producido un error compilación o errores de compilación de tiempo debido al error de escritura, si no seguimos la sintaxis y la semántica correctas de ningún lenguaje de programación, entonces el compilador arroja errores de tiempo de compilación. No permitirán que su programa ejecute una sola línea hasta que elimine todos los errores de sintaxis o hasta que depure los errores de tiempo de compilación.
Ejemplo: Falta un punto y coma en C o se escribe mal int como Int.

Errores en tiempo de ejecución: Los errores en tiempo de ejecución son los errores que se generan cuando el programa está en estado de ejecución. Este tipo de errores harán que su programa se comporte de forma inesperada o incluso que mate su programa. A menudo se los denomina Excepciones.
Ejemplo: Supongamos que está leyendo un archivo que no existe, dará como resultado un error de tiempo de ejecución.

Leer más sobre todo programming errors aquí

2

errores de compilación de tiempo son errores de sintaxis y la semántica.

Los errores de tiempo de ejecución son principalmente errores de lógica. Debido a algo que el programador ha pasado por alto, el programa se bloquea, p. división por 0, accediendo a una variable sin inicializarla primero, etc.

Cuestiones relacionadas