2011-04-28 15 views

Respuesta

133

un error "indica problemas serios que una aplicación razonable debe no tratar de atrapar."

mientras

una excepción "indica condiciones que una aplicación razonable podría quieren ponerse al día."

error junto con RuntimeException & sus subclases son unchecked excepciones. Todas las demás clases de excepción son excepciones checked.

Comprobadas excepciones son generalmente aquellas de las que un programa puede recuperar & podría ser una buena idea recuperarse de tales excepciones mediante programación. Los ejemplos incluyen FileNotFoundException, ParseException, etc. Se espera que un programador para comprobar si estas excepciones utilizando el bloque try-catch o tirar de nuevo a la persona que llama

Por otro lado tenemos sin marcar excepciones. Estas son aquellas excepciones que podrían no suceder si todo está en orden, pero ocurren. Los ejemplos incluyen ArrayIndexOutOfBoundException, ClassCastException, etc. Muchas aplicaciones utilizarán try-catch o throws cláusula para RuntimeExceptions & sus subclases, pero desde el punto de vista del idioma no es necesario. Tenga en cuenta que la recuperación de un RuntimeException es generalmente posible, pero los tipos que diseñaron la clase/excepción consideraron innecesario que el programador final verificara tales excepciones.

Errores también son la excepción no comprobada & el programador no tiene que hacer nada con esto. De hecho, es una mala idea usar una cláusula try-catch para Errores.La mayoría de las veces, la recuperación de un Error no es posible & se debe permitir que el programa finalice. Los ejemplos incluyen OutOfMemoryError, StackOverflowError, etc.

tenga en cuenta que a pesar de los errores son excepciones sin marcar, no debemos intentar tratar con ellos, pero está bien para hacer frente a RuntimeExceptions (también excepciones no marcado) en el código. Las excepciones controladas deben ser manejadas por el código.

+7

'RuntimeException'S generalmente son causados ​​por mala programación. – wulfgarpro

+5

Por el contrario, wulfgar, mi experiencia me dice que 'RuntimeException's son el resultado de una entrada de usuario no válida. – corsiKa

+9

@corsiKa la entrada de usuario no válida debe ser comprobada por el programador. – mochomecha

4

En general, el error es que nadie puede controlar o adivinar cuando ocurre. La excepción se puede adivinar y se puede manejar. En Java Exception and Error son subclase de Throwable. Se diferencia según el control del programa. Error como OutOfMemory Error que ningún programador puede adivinar y puede manejarlo. Depende dinámicamente de la arquitectura, el sistema operativo y la configuración del servidor. como el programador de excepciones puede manejarlo y puede evitar la mala conducta de la aplicación. Por ejemplo, si su código está buscando un archivo que no está disponible, entonces se lanza IOException. Tal programador de instancias puede adivinar y puede manejarlo.

11

El error es algo que la mayoría de las veces no se puede manejar.

La excepción fue creada para darle la oportunidad de hacer algo con ella. como probar algo diferente o escribir en el registro.

try{ 
    //connect to database 1 
} 
catch(DatabaseConnctionException err){ 
    //connect to database 2 
    //write the err to log 
} 
15

Error y Exception se extienden ambas Throwable, pero sobre todo Error es lanzada por JVM en un escenario que es fatal y no hay manera para que el programa de aplicación para recuperarse de ese error. Por ejemplo, OutOfMemoryError.

Aunque la aplicación incluso puede generar un Error pero no es una buena práctica, en su lugar las aplicaciones deben usar excepciones comprobadas para condiciones recuperables y excepciones de tiempo de ejecución para errores de programación.

+0

Es posible que tenga un ejemplo en el que desee intentar recuperar de 'Error' (' OutOfMemoryError', por ejemplo). Supongamos que tiene una aplicación móvil y quiere poner una imagen de fondo. En algunos dispositivos de memoria viejos o con poca memoria, esto puede no ser posible (no se permite la memoria para la aplicación). De modo que hay 2 opciones que verificará si es posible cada vez que quiera mostrar dicha imagen o simplemente intentará mostrarla y, si no funciona, detectará el 'OutOfMemoryError' y continuará sin él. –

Cuestiones relacionadas