Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3-й семестр / Лекции / 6 - Презентация - Исключения и их обработка в Java.pptx
Скачиваний:
67
Добавлен:
25.12.2020
Размер:
13.93 Mб
Скачать

Центр дистанционного обучения

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

в Java

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

Программа может иметь дело с исключением в одном из трех способов:

Игнорировать их

Обработка, там где исключение произошла

Обработка в другом месте

Способ, в котором обрабатывается исключение является

важным фактором проектирования программ

10-11 online.mirea.ru

Центр дистанционного обучения

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

static int divide(int a, int b) { return a / b;

}

public static void main(String[] args) {

try {

int c = divide(5, 0); System.out.println(“Результат: ” + c);

} catch (ArithmeticException ex)

{ System.out.println("Делить на ноль нельзя!");

} }

online.mirea.ru

Центр дистанционного обучения

Обработка

исключенийЕсли исключение игнорируется программой, то программа будет завершена аварийно и производится вывод соответствующего сообщения

• Сообщение включает в себя трассировку стека вызовов:

указывает на строку кода, где произошло исключение

показывает след вызова метода, который привел к попытке выполнения ошибочной строчки кода

10-13 online.mirea.ru

Центр дистанционного обучения

Обработка

Общиеисключенийметоды для всех классов исключений (унаследованы из Throwable):

try { ...

} catch (ArithmeticException ex) {

String message = ex.getMessage(); // Сообщение об ошибке

// Печать стека вызовов на момент ошибки: ex.printStackTrace();

}

online.mirea.ru

Центр дистанционного обучения

Обработка

исключений

Пример stack trace:

java.lang.ArithmeticException: / by zero at Test.divide(Test.java:4)

at Test.main(Test.java:9)

online.mirea.ru

Центр дистанционного обучения

Служебные

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

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

finally - ключевое слово для отметки начала блока кода, которое является дополнительным. Этот блок помещается после последнего блока 'catch'. Управление обычно передаётся в блок 'finally' в любом случае.

throw - служит для генерации исключений.

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

выбросить исключение с указанным типом.

online.mirea.ru

Центр дистанционного обучения

Генерация

исключений:

public static void divide(int x, int y) {

if (y == 0)

throw new IllegalArgumentException(“Делитель равен 0”); return x / y; }

Создается объект класса, являющегося подклассом Throwable Ключевое слово throw

online.mirea.ru

Центр дистанционного обучения

Исключе

ния

Обычно классы исключений предоставляют следующие конструкторы:

IllegalArgumentException()

IllegalArgumentException(String message) IllegalArgumentException(String message, Throwable cause) IllegalArgumentException(Throwable cause)

Параметр message – это то, что возвращает метод getMessage(). Параметр message желательно всегда задавать.

online.mirea.ru

Центр дистанционного обучения

Исключе

ния

ArithmeticException, IllegalArgumentException, NumberFormatException – все это подклассы RuntimeException: так называемые unchecked exceptions (непроверяемые исключения).

Эти исключения можно ловить и генерировать в любом месте программы, компилятором это

никак не контролируется.

online.mirea.ru

Пример: вычислениеЦ нтр дистанционного обучения

площади треугольника

public static void main(String[] args)

{ System.out.println(getAreaValue(-1, 100));

}

public static int getAreaValue(int x, int y){

if(x < 0 || y < 0) throw new IllegalArgumentE xception("value of 'x' or 'y' is negative: x="+x+",

y

="+y);

return x*y;

В методе getAreaValue() мы бросаем исключение

IllegalArgumentException с помощью ключевого слова throw.

В данном случае, в сигнатуре метода отсутствует служебное слово throws IllegalArgumentException, это не сделано потому что исключение IllegalArgumentException является не проверяемым

online.mirea.ru