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.
@Todo: ¿Por qué llamamos 'excepciones de tiempo de compilación' y no' error de tiempo de compilación', como 'excepciones marcadas'? –
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