
- •Программирование на Java
- •Глава 1 Введение в java. Основы языка.
- •Тема 1.1 Язык программирования java.
- •Тема 1.2 Состав пакета Java2.
- •Тема 1.3 Настройка среды окружения.
- •Тема 1.4 Структура Java-программы.
- •Тема 1.5 Набор текста, запуск и компиляция простейшей программы.
- •Тема 1.6 Подробное рассмотрение кода простейшей программы.
- •Тема 1.7. Создание программы в разных средах разработки.
- •Тема 1.8 Лексические основы языка
- •Тема 1.9 Элементарные типы данных.
- •Тема 1.10 Преобразование типов.
- •Арифметические операции
- •Операции сравнения
- •Тема 1.11 Кoнсольный ввод с помощью класса java.Util.Scanner
- •Тема 1.12 Классы-оболочки
- •Тема 1.13 Автоупакока и автораспаковка.
- •Тема 1.14 Операторы
- •1.14.1 Блок
- •1.14.2 Условный оператор if
- •1.14.4 Оператор цикла while
- •1.14.5 Оператор цикла do-while
- •1.14.6 Оператор цикла for
- •1.14.7 Оператор continue и метки
- •1.14.8 Оператор break
- •1.14.9 Оператор варианта switch
- •Тема 1.15 Статический импорт
- •Тема 1.16 Класс Math
- •Задания
- •Тема 1.17 Псевдослучайные числа
- •Тема 1.18 Генерация случайных чисел
- •Тема 1.19 Массивы в Java
- •1.19.1 Объявление и заполнение массива
- •1.19.2 Сортировка массива
- •Сортировка выбором
- •Сортировка методом пузырька
- •1.19.3 Многомерные массивы
- •Задания
- •1.19.4 Нерегулярные массивы
- •Глава 2 классы
- •Тема 2.1 Основы классов
- •Тема 2.2 Общая форма класса
- •Тема 2.3 Объявление объектов
- •Тема 2.4 Более подробное рассмотрение операции new
- •Тема 2.5 Присваивание переменных объектных ссылок
- •Тема 2.6 Знакомство с методами
- •Тема 2.7 Возвращение значения из метода
- •Тема 2.8 Добавление метода, принимающего параметры
- •Тема 2.9 Конструкторы
- •Тема 2.10 Сборка мусора
- •Тема 2.11 Перегрузка методов
- •Тема 2.12 Перегрузка конструкторов
- •Тема 2.13 Использование объектов в качестве параметров
- •Тема 2.14 Более пристальный взгляд на передачу аргументов
- •Тема 2.16 Рекурсия
- •Тема 2.17 Введение в управление доступом
- •Тема 2.18 Ключевое слово static
- •Тема 2.19 Ключевое слово final
- •Тема 2.20 Аргументы переменной длины
- •Тема 2.21 Строки и числа
- •Тема 2.22 Нумерованные типы
- •Глава 3 наследование и интерфейсы
- •Тема 3.1 Основы наследования
- •Тема 3.2 Наследование и доступ к членам класса
- •Тема 3.3 Конструкторы и наследование
- •Тема 3.4 Использование ключевого слова super для вызова конструктора суперкласса
- •Тема 3.5 Использование ключевого слова super для доступа к членам суперкласса
- •Тема 3.6 Многоуровневая иерархия
- •Тема 3.7 Когда вызываются конструкторы
- •Тема 3.8 Объекты подклассов и ссылки на суперклассы
- •Тема 3.9 Переопределение методов
- •Тема 3.10 Переопределение методов и поддержка полиморфизма
- •Тема 3.11 Использование абстрактных классов
- •Тема 3.12 Использование ключевого слова final
- •Тема 3.13 Предотвращение переопределения методов
- •Тема 3.14 Предотвращение наследования
- •Тема 3.15 Класс Object
- •Тема 3.16 Интерфейсы
- •3.16.1 Объявление интерфейса.
- •3.16.2 Реализация интерфейсов
- •3.16.3 Использование ссылок на интерфейсы
- •3.16.4 Переменные в составе интерфейсов
- •3.16.5 Наследование интерфейсов
- •Тема 3.17 Пакеты и ограничение доступа
- •Тема 3.18 Внутренние классы
- •3.18.1 Внутренние (inner) классы
- •3.18.2 Вложенные (nested) классы
- •3.18.3 Анонимные (anonymous) классы
- •Глава 4 Обработка исключительных ситуаций
- •Тема 4.1 Исключения в Java
- •Тема 4.2 Типы исключений
- •Тема 4.3 Неперехваченные исключения
- •Тема 4.4 Ключевые слова try и catch
- •Тема 4.6 Ключевое слово throw
- •Тема 4.7 Ключевое слово throws
- •Тема 4.8 Ключевое слово finally
- •Ошибка при выполнении метода1 java.Lang.ArithmeticException: Demo
- •Тема 4.9 Потомки Exception или написание своих классов ошибок
- •Глава 5 Универсальные типы. КоллекциИ
- •Тема 5.1 Общие сведения об универсальных типах
- •Тема 5.2 Универсальный класс с двумя параметрами типа
- •Тема 5.3 Ограниченные типы
- •Тема 5.4 Использование групповых параметров
- •Тема 5.5 Универсальные методы
- •Тема 5.6 Универсальные интерфейсы
- •Тема 5.7 Ошибки неоднозначности
- •Тема 5.8 Ограничения универсальных типов
- •Тема 5.9 Краткий обзор коллекций
- •5.9.1 Класс ArrayList
- •5.9.2 Класс LinkedList
- •5.9.3 Класс HashSet
- •5.9.4 Класс TreeSet
- •5.9.5 Доступ к коллекции через итератор
- •5.9.6 Алгоритмы коллекций
- •Глава 6 jdbc (Java DataBase Connectivity) Тема 6.1 Драйверы, соединения и запросы
- •Тема 6.2 Простое соединение и простой запрос
- •Тема 6.2 Класс ResultSet
- •Тема 6.3 Метаданные
- •Тема 6.4 Подготовленные запросы
- •Глава 7 Swing и пользовательский интерфейс
- •Тема 7.1 Общие сведения о swing
- •Тема 7.2 Архитектура mvc
- •Тема 7.3 Контейнер и компоненты
- •Тема 7.4 Простая программа, использующая средства Swing
- •Тема 7.5 Поддержка событий
- •Тема 7.6 Использование кнопок и обработка событий
- •Тема 7.7 Краткие сведения о диспетчерах компоновки
- •Тема 7.8 Пример использования jdbc и swing вместе
Тема 4.8 Ключевое слово finally
Иногда требуется гарантировать, что определенный участок кода будет выполняться независимо от того, какие исключения были возбуждены и перехвачены. Для создания такого участка кода используется ключевое слово finally. Даже в тех случаях, когда в методе нет соответствующего возбужденному исключению раздела catch, блок finally будет выполнен до того, как управление перейдет к операторам, следующим за разделом try. У каждого раздела try должен быть по крайней мере или один раздел catch или блок finally. Блок finally очень удобен для закрытия файлов и освобождения любых других ресурсов, захваченных для временного использования в начале выполнения метода. Ниже приведен пример класса с двумя методами, завершение которых происходит по разным причинам, но в обоих перед выходом выполняется код раздела finally.
Листинг 4.9
public class Main {
public static void metod1() throws ArithmeticException {
try {
System.out.println("Metod1 run");
throw new ArithmeticException("Demo");
} finally {
System.out.println("Metod1 stop");
}
}
public static void metod2() {
try {
System.out.println("Metod2 run");
return;
} finally {
System.out.println("Metod2 stop");
}
}
public static void main(String[] args) {
try {
metod1();
} catch (ArithmeticException e) {
System.out.println("Ошибка при выполнении метода1 " + e);
}
metod2();
}
}
В первом методе исключение сгенерировано вручную, но, не смотря на это, блок finally все равно выполнился. Во втором методе выход из метода осуществлен при помощи return, но блок finally все равно выполнился. В результате выполнения данной программы получили:
Metod1 run
Metod1 stop
Ошибка при выполнении метода1 java.Lang.ArithmeticException: Demo
Metod2 run
Metod2 stop
Тема 4.9 Потомки Exception или написание своих классов ошибок
Только подклассы класса Throwable могут быть возбуждены или перехвачены. Простые типы – int, char и т.п., а также классы, не являющиеся подклассами Throwable, например, String и Object, использоваться в качестве исключений не могут. Наиболее общий путь для использования исключений – создание своих собственных подклассов класса Exception. Ниже приведена программа, в которой объявлен новый подкласс класса Exception.
Листинг 4.10
public class OverrangeTenException extends Exception {
private int x;
public OverrangeTenException(int x) {
this.x = x;
}
@Override
public String toString() {
return "Значение переменной превысило 10: x=" + x;
}
}
public class Main {
public static void main(String[] args) {
int x = 0;
for (int i = 0; i < 5; i++) {
try {
x = (int) (Math.random() * 20);
if (x > 10) {
throw new OverrangeTenException(x);
}
System.out.println("x=" + x);
} catch (OverrangeTenException ex) {
System.out.println(ex);
}
}
}
}
В данном примере создан собственный класс ошибок, как потомок класса Exception. В случае, если значение переменной превышает значение 10, то выбрасываем исключение. Свое исключение нужно отловить блоком catch (OverrangeTenException ex), иначе программа остановится.
В ходе выполнения данной программы получили:
x=9
Значение переменной превысило 10: x=13
x=5
Значение переменной превысило 10: x=11
x=0
Задание:
Доработайте первое задание к главе 3. Создайте свое исключение SizeMismatchExceprion(несовпадение размеров) и обработайте его.
Выводы к главе:
Исключение – это объект одного из классов потомков Throwable
Исключение необходимо отловить, до того как оно попадет в список системных ошибок и программа остановится
Для обработки исключений в языке Java предусмотрено пять ключевых слов: try, catch, throw, throws и finally.
Код, в котором необходимо отслеживать ошибки помещается в блок try.
try{
//код, в котором могут возникнуть ошибки
}
Блок try нельзя написать без блока catch и/или finally.
Блок catch (если он есть) размещается после блока try
try{
}
catch (Тип_ошибки переменная) {
//обработка ошибки
}
Блок finally(если он есть) размещается после блока/блоков catch, если он ест, или сразу после блока try
try{
}
// catch (Тип_ошибки1 переменная) {
// }
// catch (Тип_ошибки2 переменная) {
// }
finally {
//код, который выполняется всегда
}
Блок catch или блок finally могут отсутствовать. Но не могут отсутствовать вместе!!!
Для генерации исключения используется throw
throw new Конструктор_исключения();
8. Сгенерированные исключения и исключения, возникшие в результате выполнения программы, обрабатываются совершенно одинаково.
9. Если метод не обрабатывает свои исключения, то используют ключевое слово throws, после которого через запятую указывают, какие исключения могут возникнуть в методе.
тип имя_метода(список аргументов) throws список_исключений {
//тело метода
}