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

Как исправить исключение в потоке main в Java?

Исключения - это проблемы, возникающие в процессе выполнения программы (runtime errors). При возникновении исключения программа внезапно прекращает работу, и код после строки с исключением никогда не будет выполнен.

Пример

import java.util.Scanner;
public class ExceptionExample {
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter first number:");
      int a = sc.nextInt();
      System.out.println("Enter second number:");
      int b = sc.nextInt();
      int c = a / b;
      System.out.println("The result is: " + c);
   }
}

Результат вывода

Enter first number:
100
Enter second number:
0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExceptionExample

Типы исключений

В Java есть два типа исключений

  • Проверяемые исключения - Проверяемые исключения возникают в процессе компиляции. Эти также называются компиляционными исключениями. Эти исключения нельзя просто пропустить при компиляции. Программист должен注意 (обрабатывать) эти исключения.

  • Необработанные исключения - Необработанные исключения возникают во время выполнения. Эти также называются runtime exception. К ним относятся ошибки программирования, такие как логические ошибки или неправильное использование API. Необработанные исключения игнорируются при компиляции.

线程主异常

Показываемый формат runtime exception/unchecked exception“线程主异常”,Иными словами,每当发生运行时异常时,消息均以该行开头。

Пример

В следующем примере программы на Java у нас есть массив размером 5, и мы пытаемся получить доступ к 6-ому элементу, что вызовет ArrayIndexOutOfBoundsException.

public class ExceptionExample {
   public static void main(String[] args) {
      //Создание целочисленного массива размером 5
      int inpuArray[] = new int[5];
      //Заполнение массива
      inpuArray[0] = 41;
      inpuArray[1] = 98;
      inpuArray[2] = 43;
      inpuArray[3] = 26;
      inpuArray[4] = 79;
      //Доступ к индексу больше размера массива
      System.out.println(inpuArray[6]);
   }
}

Исключение времени выполнения

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at MyPackage.ExceptionExample.main(ExceptionExample.java:14)

Пример

В следующем примере мы пытаемся создать массив, используя отрицательное значение для размера, что вызывает NegativeArraySizeException.

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

Исключение времени выполнения

Во время выполнения программа генерирует исключение времени выполнения, как показано ниже.

Exception in thread "main" java.lang.NegativeArraySizeException
at myPackage.Test.main(Test.java:6)

Обработка исключений времени выполнения

Вы можете обрабатывать исключения времени выполнения и избегать внезапного завершения программы, но в Java нет специфического решения для исключений времени выполнения, которое зависит от типа исключения и типа кода, который нужно изменить.

Например, если вам нужно исправить ArrayIndexOutOfBoundsException в первом из перечисленных выше программ, вам нужно удалить или изменить строку доступа к индексу массива, который выходит за его размер.

Пример

public class ExceptionExample {
   public static void main(String[] args) {
      //Создание целочисленного массива с размером 5
      int inpuArray[] = new int[5];
      //Заполнение массива
      inpuArray[0] = 41;
      inpuArray[1] = 98;
      inpuArray[2] = 43;
      inpuArray[3] = 26;
      inpuArray[4] = 79;
      //Доступ к индексу больше размера массива
      System.out.println( inpuArray[3]);
   }
}

Результат вывода

26
Рекомендуется к просмотру