occurred has excepciones error catch java exception

java - has - Excepción distinta de RuntimeException



java ioexception (3)

Básicamente en java (opuesto a .NET) tiene dos tipos de excepciones:

  • Excepción comprobada: todas las clases que heredan de la excepción. El código de cliente tiene que manejar este tipo de excepciones (aplicadas en el compilador) a través de cláusula try-catch o throws.
  • Excepción no verificada: todas las clases que heredan de RuntimeException. El código de cliente no tiene que manejar este tipo de excepciones.

Puedo sugerir el siguiente artículo de O''Reilly On Java Exception.

¿Hay alguna posibilidad de que ocurran excepciones aparte de RuntimeException en Java? Gracias.


El paquete java.lang define las siguientes clases de excepción estándar que no son excepciones de tiempo de ejecución:

  • ClassNotFoundException : esta excepción se lanza para indicar que no se puede encontrar una clase que se va a cargar.

  • CloneNotSupportedException : esta excepción se produce cuando se llama al método clone () para un objeto que no implementa la interfaz Cloneable y, por lo tanto, no se puede clonar.

  • Excepción : la subclase adecuada de esta excepción se lanza en respuesta a un error detectado en el nivel de la máquina virtual. Si un programa define sus propias clases de excepción, deben ser subclases de la clase Excepción.

  • IllegalAccessException : esta excepción se produce cuando un programa intenta cargar dinámicamente una clase (es decir, utiliza el método forName () de la clase Class o el método findSystemClass () o loadClass () de la clase ClassLoader) y el método que se está ejecutando actualmente no tiene acceso a la clase especificada porque está en otro paquete y no es público. Esta excepción también se produce cuando un programa intenta crear una instancia de una clase (es decir, utiliza el método newInstance () de la clase Class) que no tiene un constructor de argumento cero accesible para la persona que llama.

  • InstantiationException : esta excepción se produce en respuesta a un intento de instanciar una clase abstracta o una interfaz utilizando el método newInstance () de la clase Class.

  • InterruptedException : esta excepción se lanza para indicar que un hilo que está durmiendo, esperando o pausado de otra forma ha sido interrumpido por otro hilo.

  • NoSuchFieldException : esta excepción se produce cuando no se puede encontrar una variable especificada. Esta excepción es nueva en Java 1.1.

  • NoSuchMethodException : esta excepción se produce cuando no se puede encontrar un método específico.


Sí, hay tres tipos.

Excepciones controladas

El compilador le informará cuándo es posible lanzarlos, debido a una falla en el entorno.

Deben ser atrapados, si el programa puede hacer algo con él, de lo contrario, es preferible dejarlos ir.

La mayoría de ellos hereda de

java.lang.Exception

o desde

java.lang.Throwable

Aunque es mejor heredar de lo primero.

Por ejemplo:

java.io.IOException

Señala que se ha producido una excepción de E / S de algún tipo. Esta clase es la clase general de excepciones producidas por operaciones de E / S fallidas o interrumpidas.

Errores

Estos son tipos especiales de excepciones. NO DEBEN SER ATRAPADOS porque cuando suceden significa que algo realmente muy malo acaba de suceder.

Todos heredan de

java.lang.Error

Por ejemplo:

java.lang.OutOfMemoryError

Lanzada cuando la Máquina Virtual Java no puede asignar un objeto porque está sin memoria, y el recolector de basura no puede poner más memoria disponible.

o

java.lang.Error

Lanzado cuando se produce un desbordamiento de la pila porque una aplicación recurre demasiado profundamente.

RuntimeExceptions

Se usa para identificar fallas del programador, en lugar de fallas de recursos.

Una excepción de tiempo de ejecución podría "normalmente" evitarse durante la codificación. Si tienes uno, lo más probable es que estés haciendo algo mal.

A veces, las excepciones de tiempo de ejecución quedan atrapadas, pero, a menos que sepa exactamente lo que está haciendo y por qué , detectarlas es una mala práctica (una vez más, a menos que eso sea exactamente lo que necesita).

Ellos heredan de

java.lang.RuntimeException

Por ejemplo

java.lang.ArrayIndexOutOfBoundsException

Lanzado para indicar que se ha accedido a una matriz con un índice ilegal. El índice es negativo o mayor o igual que el tamaño de la matriz

o

java.lang.NullPointerException

Lanzado cuando una aplicación intenta usar null en un caso donde se requiere un objeto

Sobre los dos últimos, MÁS de las veces, se pueden evitar programando cuidadosamente y comprendiendo cuál es el estado del programa (¿esta matriz tiene 5 elementos? ¿Por qué debería intentar acceder a -1 o 6? ¿Es nula esta referencia? ¿Por qué debería llamar a null.toString ())

Aunque he tenido discusiones con tipos que afirman que todos los NPE deben ser atrapados. Bien, qué puedo decir.