Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Java / Лабы / lab5

.pdf
Скачиваний:
68
Добавлен:
15.03.2015
Размер:
211.93 Кб
Скачать

Лабораторная работа 5 ОБРАБОТКА ИСКЛЮЧЕНИЙ

Цель лабораторной работы

Освоить механизмы обработки исключений в Java.

Задание на лабораторную работу

В лабораторной работе требуется добавить к классам, написанным в лабораторной работе №4 обработку исключений. Напишите собственный класс исключения InvalidOperationException, являющийся наследником класса Exception. Это исключение должно генерироваться следующими методами:

методом enqueue очереди при попытке добавления элемента в переполненную очередь

методами peek и dequeue очереди, если она пуста

методом push стека при попытке добавления элемента в переполненный стек

методами peek и pop стека, если он пуст.

Исключение должно быть корректно обработано в вызывающем коде. При этом должно быть выведено сообщение о причине возникновения исключения.

Указания к выполнению лабораторной работы

В языке Java существует механизм обработки ошибок с помощью исключений. Исключение представляет собой класс, содержащий в иерархии наследования класс Throwable. Исключения, унаследованные от класса Exception и не являющиеся наследниками класса RuntimeException, являются проверяемыми. Это означает, что для успешной компиляции программы необходимо, чтобы методы, внутри которых может произойти такое исключение, обрабатывали его либо оно должно быть объявлено в их сигнатуре.

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

public class StackUnderflowException extends Exception {

public StackUnderflowException(String message) { super(message);

}

}

Конструктор данного класса принимает в качестве параметра сообщение и передаѐт его конструктору класса Exception. Это сообщение впоследствии можно получить с помощью метода getMessage().

В случае, если при выполнении метода peek() может возникнуть проверяемое исключение StackUnderflowException, оно должно быть объявлено в его сигнатуре после ключевого слова throws.

public int peek() throws StackUnderflowException { if (isEmpty()) {

throw new StackUnderflowException( "Stack is empty");

}else {

return data[top];

}

}

После этого метод, вызывающий peek, должен либо передавать это исключение наверх, также объявляя это исключение в своей сигнатуре после ключевого слова throws, либо обрабатывать это исключение в блоке try-catch. try {

a = stack.peek();

} catch (StackUnderflowException e) { System.out.println(e.getMessage());

}

Результат выполнения лабораторной работы

В результате выполнения лабораторной работы должны быть написаны следующие классы:

InvalidOperationException – класс исключения.

Код, использующий стек и очередь, корректно обрабатывающий возникающие исключения.

Соседние файлы в папке Лабы