Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дополнительные вопросы по ооп.docx
Скачиваний:
73
Добавлен:
01.04.2022
Размер:
76.51 Кб
Скачать

Какие виды исключений в Java вы знаете, чем они отличаются?

  • Throwable - базовый класс для всех исключительных ситуаций;

    • Error - базовый класс для исключительных ситуаций, которые вызваны серьезными сбоями в работе JVM. При возникновении данной ситуации скорее всего потребуется переустановка JVM; Эти исключение не перехватываемые.

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

      • RuntimeException - Все исключения, кроме данного, должны быть перехвачены. Это неконтролируемые классы, такие, как деление на ноль (“ArithmeticException”). По логике программы нужно смотреть, где может возникнуть такое исключение и где его нужно обрабатывать, а где это сделать в принципе невозможно..

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

Это оператор throw: throw new Exception();

О чем говорит ключевое слово throws?

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

Как написать собственное («пользовательское») исключение?

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

public class MyException extends Exception {

public MyException() {}; // Конструктор

public Myexception (String msg) {

super(msg);

}

}

Единственное, что добавляет этот код к стандартным возможностям - это новое имя исключения. Таким образом можно обработать свою исключительную ситуацию.

Опишите работу блока try-catch-finally.

try {

...

} catch (Имя_класса_исключения е) {

... } catch(...) {

...

}

...

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

Возможно ли использование блока try-finally (без catch)?

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

Может ли один блок catch отлавливать сразу несколько исключений?

В Java 7 стала доступна новая языковая конструкция, с помощью которой можно перехватывать несколько исключений одним блоком catch:

try {

//...

} catch(IOException | SQLException ex) {

//...

}

Всегда ли исполняется блок finally?

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

Существуют ли ситуации, когда блок finally не будет выполнен?

Например, когда JVM «умирает» - в такой ситуации finally недостижим и не будет выполнен, так как происходит принудительный системный выход из программы:

try {

System.exit(0);

} catch(Exception e) {

e.printStackTrace();

} finally { }

Что такое «коллекция»?

«Коллекция» - это структура данных, набор каких-либо объектов. Данными (объектами в наборе) могут быть числа, строки, объекты пользовательских классов и т.п.

Назовите основные интерфейсы JCF и их реализации.

Коллекции в джава разбиты на 3 категории:

  • List (список);

  • Set (множество);

  • Map (отображение);

Эти интерфейсы составляют основу для построения классов коллекции Java.

Лист - список объектов. Объекты в список можно добавлять(add), изменять(set), удалять(remove) и извлекать(get). Также существует возможность организации прохода по списку при помощи итератора - вспомогательного объекта, который используется для прохода по коллекции объекта. Классы коллекции: ArrayList - простой список объектов

LinkedList - связанный список объектов

Set - множество неповторяющихся объектов. Те же возможности, что и у List, но объект может входить в множество только 1 раз. Классы коллекции:

HashSet: набор объектов или хеш-множество, где каждый элемент имеет ключ - уникальный хеш-код

TreeSet: набор отсортированных объектов в виде дерева

Map - отображение, ассоциативный массив. В Map добавляется не 1 объект, а пара в виде ключ-значение. Добавление пары с уже существующим Map-ключом приводит к замене, а не к добавлению. Т.е. идентифицирующим полем является ключ и ему соответствует какое-то значение. Получается, что набор ключей - это Set, а сами значения - список. Классы коллекции: HashMap: структура данных в виде словаря, в котором каждый объект имеет уникальный ключ и некоторое значение

TreeMap: структура данных в виде дерева, где каждый элемент имеет уникальный ключ и некоторое значение.