Учебники по Java

Ява ГЛАВНАЯ Введение в Java Начало работы с Java Синтаксис Java Java-комментарии Java-переменные Типы данных Java Приведение типов Java Операторы Java Java-строки Java-математика Логические значения Java Java, если...иначе Java-переключатель Java-цикл во время выполнения Java для цикла Перерыв/продолжение Java Массивы Java

Java-методы

Java-методы Параметры метода Java Перегрузка метода Java Область применения Java Java-рекурсия

Java-классы

Java ООП Классы/объекты Java Атрибуты класса Java Методы класса Java Конструкторы Java Модификаторы Java Инкапсуляция Java Java-пакеты/API Наследование Java Java-полиморфизм Внутренние классы Java Java-абстракция Java-интерфейс Перечисления Java Пользовательский ввод Java Дата Java Список массивов Java Связанный список Java Java HashMap Набор хэшей для Java Java-итератор Классы-оболочки Java Исключения Java Java регулярное выражение Java-потоки Java-лямбда

Обработка файлов Java

Java-файлы Создание/запись файлов Java Файлы чтения Java Java Удалить файлы

Java Как

Добавить два числа

Справочник по Java

Ключевые слова Java Строковые методы Java Java математические методы

Примеры Java

Примеры Java Компилятор Java Java-упражнения Java-викторина Java-сертификат


Исключения Java - Попробуйте... Поймать


Исключения Java

При выполнении Java-кода могут возникать различные ошибки: ошибки кодирования, сделанные программистом, ошибки из-за неправильного ввода или другие непредвиденные вещи.

При возникновении ошибки Java обычно останавливается и генерирует сообщение об ошибке. Технический термин для этого: Java выдаст исключение (выдаст ошибку).


Java попробуй и поймай

Оператор tryпозволяет определить блок кода, который будет проверяться на наличие ошибок во время его выполнения.

Оператор catchпозволяет определить блок кода, который будет выполняться, если в блоке try произойдет ошибка.

Ключевые слова tryи catchидут парами:

Синтаксис

try {
  //  Block of code to try
}
catch(Exception e) {
  //  Block of code to handle errors
}

Рассмотрим следующий пример:

Это вызовет ошибку, потому что myNumbers[10] не существует.

public class Main {
  public static void main(String[ ] args) {
    int[] myNumbers = {1, 2, 3};
    System.out.println(myNumbers[10]); // error!
  }
}

Вывод будет примерно таким:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at Main.main(Main.java:4)

Если возникает ошибка, мы можем использовать try...catch, чтобы поймать ошибку и выполнить некоторый код для ее обработки:

Пример

public class Main {
  public static void main(String[ ] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    }
  }
}

Вывод будет:

Something went wrong.

Ну наконец то

Оператор finallyпозволяет выполнять код после try...catch, независимо от результата:

Пример

public class Main {
  public static void main(String[] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    } finally {
      System.out.println("The 'try catch' is finished.");
    }
  }
}

Вывод будет:

Something went wrong.
The 'try catch' is finished.


Ключевое слово броска

Оператор throwпозволяет создать пользовательскую ошибку.

Оператор throwиспользуется вместе с типом исключения . В Java доступно множество типов исключений: ArithmeticException, FileNotFoundException, ArrayIndexOutOfBoundsException, SecurityException, и т.д.:

Пример

Выдать исключение, если возраст меньше 18 лет (напечатать «Отказано в доступе»). Если возраст 18 лет и старше, выведите «Доступ предоставлен»:

public class Main {
  static void checkAge(int age) {
    if (age < 18) {
      throw new ArithmeticException("Access denied - You must be at least 18 years old.");
    }
    else {
      System.out.println("Access granted - You are old enough!");
    }
  }

  public static void main(String[] args) {
    checkAge(15); // Set age to 15 (which is below 18...)
  }
}

Вывод будет:

Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
        at Main.checkAge(Main.java:4)
        at Main.main(Main.java:12)

Если бы возраст был равен 20, вы бы не получили исключения:

Пример

checkAge(20);

Вывод будет:

Access granted - You are old enough!

Проверьте себя с помощью упражнений

Упражнение:

Вставьте недостающие части, чтобы обработать ошибку в приведенном ниже коде.

 {
  int[] myNumbers = {1, 2, 3};
  System.out.println(myNumbers[10]);
}  (Exception e) {
  System.out.println("Something went wrong.");
}