Практика на исключения
Задание 1
Есть класс List
(см. пакет org.itstep.task01):
public class List {
private Object[] obj;
private int size = -1;
private int cur = -1;
public List(int size) {
cur = 0;
this.size = size;
obj = new Object[size];
}
public Object get(int idx) {
return obj[idx];
}
public void add(Object item) {
obj[cur++] = item;
}
public void removeLast() {
obj[--cur] = null;
}
}
-
Создать классы
ListException
,EmptyListException
иFullListException
:ListException
является прямым наследником классаException
EmptyListException
производный класс отListException
FullListException
также производный класс отListException
-
В классе
List
добавить исключительные ситуации в методы:-
removeLast()
на тот случай, если производится попытка удаления элемента из пустого массива obj (исключение типа EmptyListException) -
add()
на тот случай, если массив obj полностью заполнен данными (исключение типаFullListException
)
-
-
Привести пример работы с классом
List
. Воспроизвести исключенияEmptyListException
иFullListException
, перехватить эти исключения в блокеtry...catch
и вывести сообщения на экран
Протестируйте методы класса List
с помощью JUnit-тестов.
Задание 2
Создать статический метод getPositiveLessHundredNumber
в классе Main
пакета org.itstep.task02,
принимающий на вход целое число.
В случае, если число отрицательное, в методе должно быть брошено проверяемое
NegativeNumberException
исключение.
Если число больше 100, должно быть брошено непроверяемое исключение GreatHundredException
.
Протестируйте метод с помощью JUnit-тестов.
Задание 3
Создать класс Triangle
в пакете org.itstep.task03, объекты которого будут неизменяемыми.
Класс инкапсулирует в себе информацию о треугольнике на плоскости (длины каждой из его ребер).
Длины сторон задаются в конструкторе.
Если по заданным сторонам нельзя построить треугольник, в конструктор должно бросаться
проверяемое исключение CreateTriangleException
.
Примечание: Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей.
Протестируйте класс с помощью JUnit-тестов.
Задание 4
Напишите метод бинарного поиска binarySearch
в методе Main
пакета org.itstep.task04 для одномерного массива целых чисел.
В случае, если массив не отсортирован, метод должен бросать проверяемое исключение.
Задание 5
Дан класс:
public class Runner {
private static final Random rnd = new Random();
public void halt() throws IOException {
if (rnd.nextBoolean()) {
throw new RuntimeException ();
} else {
throw new IOException();
}
}
}
Напишите код в методе main()
класса Main
пакета org.itstep.task05, который создает объекты данного класса и вызывает метод halt()
.
В случае, если в методе было брошено RuntimeException
, вывести в консоль halt;
в противном случае – пробросить исключение наверх.
Задание 6
Дан класс в пакете org.itstep.task06:
public class XmlReader {
private static final Random rnd = new Random();
public void read() throws IOException {
switch (rnd.nextInt(3)) {
case 1:
throw new NullPointerException();
case 2:
throw new Error();
case 3:
throw new FileNotFoundException();
default:
throw new FileSystemAlreadyExistsException();
}
}
}
Создайте статический метод readXml()
в классе Main
пакета org.itstep.task06,
который принимает массив объектов данного класса, и вызывает у каждого объекта метод read()
.
Если при исполнении будет брошено исключение FileSystemAlreadyExistsException
,
поймать исключение и бросить исключение FileNotFoundException
.