Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Manejo de excepciones en Java: Explicación

Excepción-Manejo-en-Java-Explicado
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

¡El manejo de excepciones en Java es uno de los conceptos más importantes que aprenderá como desarrollador de Java! Este tutorial lo ayuda a comprender e implementar el manejo de excepciones correctamente.

Cada programa de computadora tiene un flujo específico en el que se ejecuta. Si algo inesperado sucede, conduce a una perturbación en el flujo normal del programa.

Por ejemplo, la división de cualquier valor numérico por cero o el acceso a un índice que no existe en una matriz. Este fenómeno se denomina como un excepción en programación.

En palabras simples, una excepción es algo que no esperaba que sucediera, pero puede suceder y luego debe manejarlo.

¿Por qué ocurre una excepción?

El punto clave aquí es posibilidad. Hay varias cosas que podrían salir mal. El estado de la red, la interacción del usuario, las entradas no válidas, etc., son algunas de las cosas que podrían dar lugar a una excepción. Lo importante es cómo maneja esas excepciones que cree que ocurrirán en algún momento de una forma u otra.

Exception Handling by JVM

Cuando ocurre una excepción dentro de un programa Java, se crea un objeto que describe la excepción, incluido su tipo y el estado del programa cuando ocurrió. A continuación, este objeto se pasa al máquina virtual de Java (JVM). La JVM intenta encontrar un método o función para manejar la excepción. Pasa por una lista de métodos que potencialmente pueden manejar la excepción.

método de manejo de excepciones.
Crédito de la imagen: Oracle

Una vez que encuentra el método apropiado para manejar la excepción, pasa la excepción al método, pero si no puede encontrar un método apropiado, finaliza el programa llamando al método predeterminado de manejo de excepciones.

Types of Exceptions in Java

Tipos-de-excepciones-en-Java

Las excepciones en java son de dos tipos:

comprobado: el compilador detecta estos tipos de excepciones en el momento de la compilación. Algunas de las excepciones verificadas en Java incluyen IOException y SQLException.

Desenfrenado: el compilador no tiene conocimiento de estas excepciones en tiempo de compilación porque se vuelven evidentes en tiempo de ejecución. Se verifican cuando se ejecuta el código. Las excepciones no verificadas incluyen ArrayIndexOutOfBoundsException e IllegalStateException.

Ways to Handle an Exception

Aquí hay algunas formas en las que puede manejar o lanzar una excepción:

  • intentar… atrapar bloque
  • lanzar/lanzar palabra clave

#1. intentar… atrapar bloque

El bloque try-catch se utiliza para ejecutar un fragmento de código en el que existe la posibilidad de que se produzca una excepción. Él tratan y coger los bloques son dos bloques separados de código – coger bloque se ejecuta cuando el tratan el bloque no se ejecuta normalmente.

try {
  // normal code
} catch(Exception e) {
  // code which handles an exception
}

También hay un finalmente bloque que puede usar para ejecutar algún código independientemente de que ocurra una excepción o no. El código de este bloque se ejecutará en todos los casos.

try {
  // normal code
} catch(Exception e) {
  // code which handles an exception
} finally {
  // some code
}

#2. lanzar y lanzar palabra clave

EL lanzar La palabra clave se utiliza para crear explícitamente una sola excepción. Puedes usar lanzar palabra clave si sabe que definitivamente puede ocurrir una excepción para una condición particular.

public static void occur() {
  // condition
  throw new ArithmeticException();
}

public static void main(String[] args) {
  try {
    occur();
  } catch(Exception e) {
    // handle
  }
}

Puede utilizar el tiros palabra clave para indicar múltiples excepciones que sabe que ocurrirán en un método dado.

public static void occur() throws Exception1, Exception2, Exception3 {
  // conditions which throw different exceptions
}

public static void main(String[] args) {
  try {
    occur();
  } catch(Exception1 e) {
    //...
  } catch(Exception2 e) {
    //...
  } catch(Exception3 e) {
    //...
  }
}

Some Common Exceptions in Java

Algunas excepciones comunes en Java

#1. IOException

Una IOException puede ocurrir en java si hay un problema con el proceso de entrada/salida. Por lo general, ocurre cuando intenta acceder a un archivo y su contenido, pero el archivo no existe o hay un problema al leer el contenido que contiene.

import java.io.FileNotFoundException;
import java.io.FileReader;

public class Main {
    public static void main(String[] args) {
        try {
            FileReader file = new FileReader("hello.txt");
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
    }
}

#2. ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException

Una matriz es una estructura de datos que almacena valores del mismo tipo de datos y cada valor tiene un índice que comienza desde 0 y va hasta (n-1), donde n es el número total de valores presentes en la matriz. Puede acceder a un elemento especificando el índice con el nombre de la variable que hace referencia a la matriz:

array[index]

Ahora, si intenta acceder a un elemento con un índice menor que 0 o mayor que (n-1), ocurrirá una excepción porque no hay ningún elemento en ese índice en particular. Este tipo de excepción se conoce como ArrayIndexOutOfBoundsException y ocurre en tiempo de ejecución.

public class Main {
    public static void main(String[] args) {
        try {
            int[] arr = {34, 1, 78, 3, 5};
            int element = arr[7];
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#3. ClassCastException

Este tipo de excepción ocurre cuando intenta encasillar el objeto de una clase principal con el tipo de una de sus subclases. También puede obtener esta excepción si intenta encasillar un objeto con una clase con la que no es compatible.

class A {
    public void display() {
        System.out.println("This is class A");
    }
}

class B extends A {
    public void display() {
        System.out.println("This is class B which is a subclass of A");
    }
}

class C extends B {
    public void display() {
        System.out.println("This is class C which is a subclass of B");
    }
}

public class Main {
    public static void main(String[] args) {
        try {
            A objA = new A();
            B objB = (B) new A();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

El código anterior arrojará una ClassCastException porque estamos tratando de encasillar un objeto de la clase principal con el tipo de su subclase.

#4. Argumento de excepción ilegal

Cuando un método o una función recibe un argumento que no es válido, puede generar una IllegalArgumentException. Por ejemplo, supongamos que está creando un método para calcular el perímetro de un cuadrado.

Al solicitar la longitud de un lado de la cuadrado del usuario, si obtiene un valor negativo, puede lanzar esta excepción porque el lado de un cuadrado no puede ser negativo.

public class Main {
    public static int perimeter(int length) {
        if(length < 0) {
            throw new IllegalArgumentException("No negative values are allowed!");
        }
        return 4 * length;
    }

    public static void main(String[] args) {
        try {
            System.out.println(perimeter(-5));
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#5. IllegalStateExceptionIlegalStateException

Cuando llama a un método o una función en un momento en el que no debería llamarse, obtiene una IllegalStateException. Por ejemplo, si llama al método de inicio en un subproceso que ya se ha iniciado, Java lanzará esta excepción en tiempo de ejecución.

class AThread extends Thread {
    public void run() {
        System.out.println("This is a thread!");
    }
}

public class Main {
    public static void main(String[] args) {
        try {
            AThread t = new AThread();
            t.start();
            t.start();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#6. Excepción de puntero nulo

Ocurre cuando intenta acceder a las propiedades de un objeto nulo o una variable que apunta a un valor nulo. Nulo es un valor especial en Java que indica que no se asigna ningún valor a una variable de referencia.

public class Main {
    public static void main(String[] args) {
        try {
            String num = null;
            System.out.println(num.length());
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

#7. NumberFormatException

Ocurre cuando intenta convertir una cadena con formato incorrecto en un número. Por ejemplo, si intenta convertir "nulo" o "veinte" en un número, Java lanzará esta excepción.

public class Main {
    public static void main(String[] args) {
        try {
            int num = Integer.parseInt("12,389");
            System.out.println(num);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Conclusión

El manejo de excepciones es importante porque pueden crear interrupciones innecesarias en el flujo del programa. Tenga en cuenta que las excepciones son diferentes de los errores porque las excepciones deben manejarse, mientras que los errores no pueden manejarse. En su lugar, deben ser resueltos o reparados. Puede obtener más información sobre Java consultando estos cursos de Java en línea.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder