English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Чтение ввода и выполнение необходимых вычислений в методе. Код, вызывающий исключение, остается в блоке try, а все возможные исключения ловятся в блоке catch. В каждом блоке catch отображается соответствующее сообщение, и затем вызывается этот метод снова.
В следующем примере у нас есть массив из 5 элементов, мы принимаем два целых числа от пользователя, представляющие позиции в массиве, и выполняем с ними деление. Если вводимые позиции больше 5 (длина массива), возникает исключение ArrayIndexOutOfBoundsException, и если выбрана позиция знаменателя 4 (т.е. 0), возникает ArithmeticException.
Мы читаем значения и рассчитываем результат статическим методом. Мы ловим эти два исключения в двух catch-блоках и вызываем этот метод после отображения соответствующего сообщения в каждом блоке.
import java.util.Arrays; import java.util.Scanner; public class LoopBack { int[] arr = {10, 20, 30, 2, 0, 8}; public static void getInputs(int[] arr){ Scanner sc = new Scanner(System.in); System.out.println("Выберите числитель и знаменатель (не 0) из этого массива (введите позиции от 0 до 5)"); int a = sc.nextInt(); int b = sc.nextInt(); try { int result = (arr[a]) / (arr[b]); System.out.println("Результат " + arr[a] + "/" + arr[b] + ": " + result); catch(ArrayIndexOutOfBoundsException e) { System.out.println("Ошибка: Вы выбрали позицию, которая не находится в массиве: ПОПРОБУЙТЕ ЕЩЕ РАЗ"); getInputs(arr); } System.out.println("Ошибка: Знаменатель не должен быть нулём: ПОПРОБУЙТЕ ЕЩЕ РАЗ"); getInputs(arr); } } public static void main(String [] args) { LoopBack obj = new LoopBack(); System.out.println("Массив: " + Arrays.toString(obj.arr)); getInputs(obj.arr); } }
Результат вывода
Массив: [10, 20, 30, 2, 0, 8] Выберите числитель и знаменатель (не 0) из этого массива (введите позиции 0 до 5) 14 24 Ошибка: Вы выбрали позицию, которая не находится в массиве: ПОПРОБУЙТЕ ЕЩЕ РАЗ Выберите числитель и знаменатель (не 0) из этого массива (введите позиции 0 до 5) 3 4 Ошибка: Знаменатель не должен быть нулём: ПОПРОБУЙТЕ ЕЩЕ РАЗ Выберите числитель и знаменатель (не 0) из этого массива (введите позиции 0 до 5) 0 3 Результат 10/2: 5