2010-05-22 24 views
7

Esto puede sonar incómodo ...
Pero no lo entendí.Terminología Java: ¿Por qué error en tiempo de compilación y no excepción en tiempo de compilación?

¿Por qué tenemos compile-time error y no compile-time exception en Java?

quiero decir que nunca decimos compile-time exception.
tendemos a decir que como compile-time error.

¿Hay alguna razón específica para lo mismo?
Cualquier sugerencia es bienvenida ...

¡Gracias!

+0

@Todo: ¿Por qué llamamos 'excepciones de tiempo de compilación' y no' error de tiempo de compilación', como 'excepciones marcadas'? –

+2

Una excepción no siempre es un problema con el programa. El término 'excepción' tiene un significado técnico específico en el contexto de un programa de computadora. Ver la explicación que publiqué. – RMorrisey

Respuesta

10

La razón de esto es que una excepción es algo arrojado durante la ejecución de un programa. Java tiene un tipo específico para esto, la clase Exception.

En tiempo de compilación, su código no se está ejecutando, por lo que no puede lanzar una excepción. De hecho, es una ejecución adecuada del compilador para encontrar errores en su código, ¡ciertamente no es un caso excepcional!

0

Una excepción es el nombre específico de un error que se puede manejar dentro de la lógica de su software. Un error es simplemente eso, un error tipográfico o simplemente un código incorrecto.

+0

Java har runtime * errors * también. – aioobe

+0

Los errores de tiempo de ejecución son lo que llamamos excepciones no administradas – blissapp

+0

Tal vez las llame de esa manera, la gente de Sun no las necesita. (c.f. javadoc para java.lang.Error). – meriton

1

Los errores de tiempo de compilación son el resultado de la incapacidad del software para crearse tal como se indica. Por ejemplo:

String myString = new ButtonEvent(); 

es un error de tiempo de compilación. Mientras que una excepción es algo que se atrapa durante el procesamiento del software.

try{ 
    while(file.readNextLine() != file.EOF){ 
    } 
} 
catch(UnopenedException ex){ 
} 

Aquí hemos asumido que el archivo se pudo abrir correctamente y se había abierto. La excepción es para esos casos "excepcionales" en los que no se abrió el archivo.

4

La excepción en java es realmente diferente que el error de compilación. No tenemos el término excepción de tiempo de compilación. Porque la excepción es que ocurre algo que no esperas que suceda. Solo tenemos una excepción marcada y sin marcar. Con la excepción marcada, en tiempo de compilación, el compilador lo forzará a atraparlo, pero es , no es un error. No lo capte, no puede compilar el programa, pero no es un error de compilación.

2

La excepción es algo más que un flujo inesperado que se puede manejar. El error de tiempo de compilación es más parecido al código inválido ... así que el código ni siquiera compila ... Por lo tanto, el término "error", ya que denota un problema más serio que debe corregirse.

3

Un error indica que hay un problema con el programa. Una excepción es una construcción específica que interrumpe el flujo de control del programa y desenrolla la pila, capturando información sobre el estado de la pila para que se pueda informar.

Se puede utilizar una excepción para indicar un error, pero no siempre.Por ejemplo:

void startOperation() { 
try { 
    while (someComplexOperationIsOnGoing()) { 
    checkRestart(); 
    } 
} 
catch (RestartException re) { 
    startOperation(); 
} 
} 

void checkRestart() { 
if (shouldRestart()) { 
    throw new RestartException(); 
} 
} 

Este ejemplo de código incompleto está destinado a mostrar un caso en el que una excepción no es un error. Esta no es siempre la mejor práctica; pero se usa en algunos casos donde la intención es interrumpir el flujo de control en el programa (como redirigir la página en un marco web, al responder a una solicitud HTTP) y devolver el control a un nivel superior de la pila . El término excepción se refiere al mecanismo que interrumpe el programa.

En java, existe una clase Excepción que encapsula este comportamiento. La clase de error también interrumpe el flujo de control de la misma manera que una excepción; pero está reservado solo para problemas graves e irrecuperables que ocurren en tiempo de ejecución. Se usa, por ejemplo, cuando la JVM se queda sin memoria y no puede crear objetos nuevos.

+1

Adición: Y dado que un error de tiempo de compilación es irrecuperable, tiene más sentido llamarlo error que excepción. – meriton

Cuestiones relacionadas