返回

разбираемся с throw, throws, try/catch и printStackTrace()

Android

В программировании исключения (или ошибки) - это события, которые могут произойти во время выполнения программы и вызвать её неправильное поведение. Исключения могут быть вызваны различными факторами, такими как деление на ноль, попытка открыть несуществующий файл или выход за пределы массива.

Для обработки исключений в Java используются операторы try, catch, throw и throws.

Оператор try

Оператор try используется для обозначения блока кода, в котором могут возникнуть исключения. Этот блок кода должен быть заключён в фигурные скобки.

try {
  // Код, который может вызвать исключение
}

Оператор catch

Оператор catch используется для обработки исключений, которые возникли в блоке try. Оператор catch должен следовать за оператором try и также должен быть заключён в фигурные скобки. В операторе catch указывается тип исключения, которое он обрабатывает.

try {
  // Код, который может вызвать исключение
} catch (ArithmeticException e) {
  // Код обработки исключения ArithmeticException
}

Оператор throw

Оператор throw используется для вызова исключения. Оператор throw может использоваться только в блоке try или catch.

try {
  if (x < 0) {
    throw new IllegalArgumentException("x must be non-negative");
  }
} catch (IllegalArgumentException e) {
  // Код обработки исключения IllegalArgumentException
}

Оператор throws

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

public void divide(int x, int y) throws ArithmeticException {
  if (y == 0) {
    throw new ArithmeticException("Division by zero");
  }

  int result = x / y;
}

Метод printStackTrace()

Метод printStackTrace() используется для вывода информации об исключении в консоль. Этот метод может быть вызван в блоке catch или в любом другом месте программы.

try {
  // Код, который может вызвать исключение
} catch (Exception e) {
  e.printStackTrace();
}

Создание собственных исключений

В Java можно создавать собственные исключения, наследуясь от класса Exception. Для этого необходимо создать новый класс, который наследуется от класса Exception, и переопределить метод getMessage(), который возвращает сообщение об исключении.

public class MyException extends Exception {

  public MyException(String message) {
    super(message);
  }

  @Override
  public String getMessage() {
    return "This is my exception";
  }
}

Теперь можно использовать собственное исключение в программе.

try {
  // Код, который может вызвать исключение
  throw new MyException("This is my exception");
} catch (MyException e) {
  // Код обработки исключения MyException
}

Заключение

В этой статье мы подробно рассмотрели операторы try, catch, throw и throws, а также метод printStackTrace(). Мы объяснили, как использовать эти элементы для обработки исключений и создания собственных исключений.