Generalidades

Manejo de excepciones para anulaciones de métodos | Por Rajendra Rajaram | Enero de 2022

Rajendra Rajaram
1641643754 962 Manejo de excepciones para anulaciones de metodos Por Rajendra
fotógrafo Kevin Warbrick existe sin salpicaduras

El uso de anulaciones para el manejo de excepciones es nuevo para mí, así que quería explorarlo. Profundicemos en las excepciones y luego analizaremos las excepciones cubiertas.

Si observamos el diagrama de flujo anterior, sabremos que cada lanzamiento se llama una excepción, y la excepción se divide principalmente en dos partes Compruebe la excepción y Excepción no verificada. Las excepciones marcadas son aquellas excepciones que son advertidas por Compliar y las excepciones no marcadas se pueden observar en tiempo de ejecución. Analicemos un ejemplo de excepciones comprobadas.

Cuando usted Mirando el diagrama anterior, notará que ClassNotFoundException, InterruptedException, IOException, etc. son tipos de excepciones verificadas, mientras que ArithmeticException, ClassCastException no están verificadas o, a veces, se denominan excepciones de tiempo de ejecución.

Ahora analicemos el manejo de excepciones para anular.

La ambigüedad surge cuando el manejo de excepciones implica la anulación de métodos. El compilador está confundido acerca de qué definición seguir.

tipo de pregunta:

Hay dos tipos de problemas asociados con él, como sigue:

Pregunta 1: si la superclase no declara una excepción

Pregunta 2: si la superclase declara una excepción

En este problema, ocurren las siguientes dos situaciones:

  • Caso 1: Si SuperClass no declara ninguna excepción y la subclase declara excepciones marcadas
  • Caso 2: Si SuperClass no declara ninguna excepción y SubClass declara una excepción no verificada

Analicemos los dos casos anteriores y expliquémoslos con el siguiente ejemplo:

Caso 1: Si la SuperClase no declara ninguna excepción y la subclase declara excepciones verificadas.

class  Animal{

public void method() {
System.out.println("I am in a Dog class");
}
}

class Dog extends Animal{
@Override
public void method() throws IOException {
super.method();
}
}

public class Test {

public static void main(String[] args) {

}
}

prueba.java:13:17
java: el método () en Perro no puede anular el método () en Animal
El método anulado no arroja java.io.IOException

Caso 2: Si SuperClass no declara ninguna excepción y SubClass declara una excepción no verificada

class  Animal{

public void method() {
System.out.println("I am in a Animal class");
}
}

class Dog extends Animal{
@Override
public void method() throws ArithmeticException {
super.method();
}
}

public class Test {

public static void main(String[] args) {
Dog dog = new Dog();
dog.method();
}
}

prueba
estoy en la clase de animales

Ahora, el siguiente tema relacionado es si la superclase declara una excepción. En este problema, ocurrirán las siguientes 3 situaciones:

  • Caso 1: Si SuperClass declara una excepción y SubClass declara una excepción que no sea la subexcepción de la Excepción declarada por SuperClass.
  • Caso 2: Si SuperClass declara una excepción y SubClass declara una subexcepción de Exception declarada por SuperClass.
  • Caso 3: Si SuperClass declara excepción y SubClass no declara excepción.

Expliquemos ahora estos casos a través de la implementación y la explicación.

Caso 1: Si SuperClass declara una excepción y SubClass declara una excepción que no sea la subexcepción de la Excepción declarada por SuperClass.

class  Animal{

public void method() throws RuntimeException{
System.out.println("I am in a Animal class");
}
}

class Dog extends Animal{
@Override
public void method() throws Exception {
super.method();
}
}

public class Test {

public static void main(String[] args) {
Dog dog = new Dog();
dog.method();
}
}

prueba.java:13:17
java: el método () en Perro no puede anular el método () en Animal
El método anulado no arroja java.lang.Exception

Caso 2: Si SuperClass declara una excepción y SubClass declara una subexcepción de Exception declarada por SuperClass.

class  Animal{

public void method() throws IOException{
System.out.println("I am in a Animal class");
}
}

class Dog extends Animal{
@Override
public void method() throws ArithmeticException {
super.method();
}
}

public class Test {

public static void main(String[] args) {
Dog dog = new Dog();
dog.method();
}
}

prueba.java:14:21
java: excepción no notificada java.io.IOException; debe detectarse o declararse para lanzarse

Caso 3: Si SuperClass declara excepción y SubClass no declara excepción.

class  Animal{

public void method() throws IOException{
System.out.println("I am in a Animal class");
}
}

class Dog extends Animal{
@Override
public void method() {
super.method();
}
}

public class Test {

public static void main(String[] args) {
Dog dog = new Dog();
dog.method();
}
}

prueba.java:14:21
java: excepción no notificada java.io.IOException; debe detectarse o declararse para lanzarse

Espero que ganes algo, 😀

LEER  ¿Qué es un "ataque Smishing"? (y cómo evitarlos) - ANTOK TA

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba