English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Исключения - это проблемы, возникающие в процессе выполнения программы (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