Обработка исключений
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
мин.
Приведение типов
8
мин.
Типы строк в Java
7
мин.