Un evento no deseado sin excepción que interrumpe el flujo normal de un programa se llama Excepción . La mayoría de las veces, las excepciones son causadas por nuestro programa y son recuperables. Ejemplo: si el requisito de nuestro programa es leer datos del archivo remoto ubicado en los EE. UU. En tiempo de ejecución, si el archivo remoto no está disponible, obtendremos RuntimeException diciendo fileNotFoundException. Si se produce la excepción fileNotFoundException, podemos proporcionar el archivo local al programa para que lo lea y continúe con el resto del programa normalmente.
Hay principalmente dos tipos de excepción en Java de la siguiente manera:
1. Excepción comprobada: la excepción que comprueba el compilador para la ejecución sin problemas del programa en tiempo de ejecución se denomina excepción comprobada. En nuestro programa, si existe la posibilidad de que aumenten las excepciones verificadas, entonces es obligatorio que manejemos esa excepción verificada (ya sea mediante la palabra clave try-catch o throws); de lo contrario, obtendremos un error en tiempo de compilación.
Ejemplos de excepciones verificadas son classNotFoundException, IOException, SQLException, etc.
2. Excepción no verificada: las excepciones que no son verificadas por el compilador, ya sea que el programador las maneje o no, se denominan excepciones no verificadas.
Ejemplos de excepciones no verificadas son ArithmeticException, ArrayStoreException, etc.
Ya sea que la excepción esté marcada o no, cada excepción ocurre en tiempo de ejecución solo si no hay posibilidad de que ocurra ninguna excepción en tiempo de compilación.
ClassCastException: es la clase secundaria de RuntimeException y, por lo tanto, es una excepción no verificada. JVM genera automáticamente esta excepción cada vez que intentamos encasillar incorrectamente una clase de un tipo a otro, es decir, cuando intentamos encasillar un objeto principal en un tipo secundario o cuando intentamos encasillar un objeto en una subclase de la que no es un instancia.
En el siguiente programa, creamos un objeto o de tipo Object y encasillamos ese objeto o en un objeto String s. Como sabemos que la clase Object es la clase principal de todas las clases en Java y como estamos tratando de encasillar un objeto principal a su tipo secundario, finalmente obtenemos java.lang.ClassCastException
Java
// import required packages import java.io.*; import java.lang.*; import java.util.*; // driver class class geeks { // main method public static void main(String[] args) { try { // creating an object Object o = new Object(); // type casting the object o to string which // give the classcasted exception because we // type cast an parent type to its child type. String s = (String)o; System.out.println(s); } catch (Exception e) { System.out.println(e); } } }
java.lang.ClassCastException: class java.lang.Object cannot be cast to class java.lang.String (java.lang.Object and java.lang.String are in module java.base of loader 'bootstrap')
Para lidiar con ClassCastException, tenga cuidado de que cuando intente encasillar un objeto de una clase en otra clase, asegúrese de que el nuevo tipo pertenezca a una de sus clases principales o no intente encasillar un objeto principal a su tipo secundario. Mientras usamos Colecciones, podemos evitar ClassCastException usando genéricos porque los genéricos proporcionan la verificación en tiempo de compilación.
A continuación se muestra la implementación del enunciado del problema:
Java
// import required packages import java.io.*; import java.lang.*; import java.util.*; // driver class class geeks { // main method public static void main(String[] args) { try { // creating an object String s = "GFG"; Object o = (Object)s; // Object class is parent class of every class // Hence exception doesn't occur. System.out.println(o); } catch (Exception e) { System.out.println(e); } } }
GFG
Publicación traducida automáticamente
Artículo escrito por mroshanmishra0072 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA