English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

¿Cómo reparar la excepción en el hilo principal del procesador Java?

Las excepciones son problemas que ocurren durante la ejecución del programa (errores de tiempo de ejecución). Cuando ocurre una excepción, el programa se detiene repentinamente y el código que sigue a la línea de excepción nunca se ejecutará.

Ejemplo

import java.util.Scanner;
public class ExceptionExample {
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Ingrese el primer número: ");
      int a = sc.nextInt();
      System.out.println("Ingrese el segundo número: ");
      int b = sc.nextInt();
      int c = a/b;
      System.out.println("El resultado es: "+c);
   }
}

Resultado de salida

Ingrese el primer número:
100
Ingrese el segundo número:
0
Excepción en el hilo "main" java.lang.ArithmeticException: / by zero
at ExceptionExample

Tipos de excepciones

En Java, hay dos tipos de excepciones

  • Excepciones verificadas - Las excepciones verificadas son las que ocurren en tiempo de compilación, también conocidas como excepciones de tiempo de compilación. Estas excepciones no se pueden ignorar simplemente en tiempo de compilación. Los programadores deben prestar atención (manejar) estas excepciones.

  • Excepciones no verificadas - Las excepciones no verificadas son las que se producen durante la ejecución. Estas también se conocen como excepciones de tiempo de ejecución. Incluyen errores de programación, como errores lógicos o mal uso de API. Las excepciones de tiempo de ejecución se ignoran en la compilación.

Excepción principal del hilo

Excepción de tiempo de ejecución/el modo de visualización de las excepciones no verificadas"Excepción en el hilo principal",es decir, cada vez que se produce una excepción de tiempo de ejecución, el mensaje comienza con esa línea.

Ejemplo

En el siguiente programa Java, tenemos un array de tamaño5y trata de acceder al índice6elementos, lo que generará ArrayIndexOutOfBoundsException.

public class ExceptionExample {
   public static void main(String[] args) {
      //creando un array de tamaño5del array de enteros
      int inpuArray[] = new int[5];
      //rellenar el array
      inpuArray[0] = 41;
      inpuArray[1] = 98;
      inpuArray[2] = 43;
      inpuArray[3] = 26;
      inpuArray[4] = 79;
      //El índice de acceso es mayor que el tamaño del array
      System.out.println(inpuArray[6]);
   }
}

Excepción de tiempo de ejecución

Excepción en el hilo "main" java.lang.ArrayIndexOutOfBoundsException: 6
at MyPackage.ExceptionExample.main(ExceptionExample.java:14)

Ejemplo

En el siguiente ejemplo, intentamos crear un array utilizando un número negativo como valor de tamaño, lo que generará NegativeArraySizeException.

public class Test {
   public static void main(String[] args) {
      int[] intArray = new int[-5];
   }
}

Excepción de tiempo de ejecución

En la ejecución, el programa generará una excepción de tiempo de ejecución, como se muestra a continuación.

Excepción en el hilo "main" java.lang.NegativeArraySizeException
at myPackage.Test.main(Test.java:6)

Manejo de excepciones de tiempo de ejecución

Puede manejar excepciones de tiempo de ejecución y evitar la terminación de excepciones, pero no hay un programa específico para excepciones de tiempo de ejecución en Java, depende del tipo de excepción y el tipo de código que se cambie.

Por ejemplo, si necesita reparar ArrayIndexOutOfBoundsException en el primer programa enumerado anteriormente, debe eliminar/Cambiar la posición del índice de acceso del array que excede su tamaño.

Ejemplo

public class ExceptionExample {
   public static void main(String[] args) {
      //Creando un array de enteros con tamaño 5
      int inpuArray[] = new int[5];
      //rellenar el array
      inpuArray[0] = 41;
      inpuArray[1] = 98;
      inpuArray[2] = 43;
      inpuArray[3] = 26;
      inpuArray[4] = 79;
      //El índice de acceso es mayor que el tamaño del array
      System.out.println(inpuArray[3]);
   }
}

Resultado de salida

26