Топ-100Обработка исключений - CodOrbits
LogoCodOrbits

Раздел: Java Core

Раздел охватывает ключевые возможности языка Java: аннотации, исключения, generics, лямбда-выражения, интерфейсы и другие базовые концепции.

Все разделы
Иконка Java Core

Обработка исключений

Last updated: 4 мая 2025 г.

Если при работе Java приложения возникает ошибка(исключение) и обработка данной ошибки не предусмотрена в программе этого приложения, то приложение ОСТАНОВИТ свою работу и программисту, который запустил это приложение или пользователю, который использовал это приложение демонстрируется в виде большого и страшного StackTrace, которое поясняет что же с приложением случилось и какая ошибка произошла. Такой StackTrace мы все видели когда запускали программу с ошибкой.

С помощью обработки ошибок можно сделать так чтобы приложение не останавливало свою работу даже если произошла ошибка, то есть можно сделать так чтобы пользователю например показалось сообщение “Невозможно сейчас выполнить данную операцию, потому что при выполнении данной операции произошла такая-то ошибка!” уже в виде красивого всплывающего окна вместо страшного StackTrace и главное, что приложение при этом продолжит работать.

Обработка ошибок совершается с помощью try и catch. И еще finally можно иногда.


Обработка исключений с помощью try catch

Если в коде try возникнет исключение указанное в круглых скобочках рядом с catch, то выполняется код в catch.

Поясним на примере:            

1class Exceptions {
2    public static void main(String args[]) {
3        int array[] = new int[2];
4        try {
5            // Если в коде try возникнет исключение указанное в круглых скобочках
6            // рядом с catch, то выполняется код в catch. В круглых скобочках рядом
7            // с catch ниже можно увидеть ArrayIndexOutOfBoundsException – это
8            // ошибка выхода за пределы массива. Мы выделили память под два
9            // элемента массива (new int[2]), а ниже мы обращаемся к третьему.
10            // Таким образом, если пользователь приведет программу к ошибке,
11            // то выполнится код в catch и она не завершит работу.
12
13            // Здесь происходит ошибка (обратились к индексу за границей массива)
14            System.out.println("Access to third:" + array[3]);
15        } catch (ArrayIndexOutOfBoundsException e) {
16            // В try произошла ошибка, поэтому выполняется код в catch.
17            // Здесь мы просто выводим на консоль информацию о произошедшей
18            // ошибке, которая хранится в e.
19            // Можно здесь выполнять вполне понятное дело всякие другие операции,
20            // а не только вывод сообщения на консоль или куда-либо еще.
21            System.out.println("Exception:" + e);
22        } finally {
23            // finally в коде выполняется всегда независимо
24            // от того, произошло исключение или нет
25            array[0] = 6;
26            System.out.println("Value of first: " + array[0]);
27            System.out.println("finally completed");
28        }
29        // Нижняя строка в результате сработает независимо
30        // от того, произошло выше исключение или нет.
31        // То есть приложение ПРОДОЛЖАЕТ свою работу.
32        System.out.println("App is still working!!!!!!!");
33    }
34}

Вывод:


Throw и Throws

По теме исключений еще нужно знать два ключевых слова throws и throw.

Поясним на примере:

1class Exceptions1 {
2    public static void deposit(int amount) throws ArrayIndexOutOfBoundsException {
3        //throws предупреждает программиста, что в методе может возникнуть указанное исключение
4        //и что обработка этого исключения в текущем коде отсутствует
5        //обычно по причине что возможности или надобности обработать это исключение сейчас нет.
6
7        throw new ArrayIndexOutOfBoundsException();
8        //throw возбуждает указанное исключение
9        //То есть ошибка происходит не в результате каких-то операций, например обращение
10        //к третьему индексу в массиве ограниченному двумя элементами, как было в предыдущем примере кода,
11        //а мы специально просто берем и с помощью throw new делаем так, чтобы эта ошибка произошла.
12    }
13
14    public static void main(String[] args) {
15        //вызываем метод с throws и throw
16        deposit(3);
17    }
18}

Вывод:

Как видим при запуске программы происходит возбужденная нами ошибка.  


Следующие уроки

Generics в Java

9
мин.

Similar Articles Icon
Divider

Приведение типов

8
мин.

Similar Articles Icon
Divider

Типы строк в Java

7
мин.

Similar Articles Icon