Лабораторная работа Разработка программы, корректно обрабатывающей исключения. ИБ-95_Кондаков_П_А_ЛР6. Отчет защищен с оценкой преподаватель доцент, к т. н
Скачать 19.61 Kb.
|
Факультет Информационных систем и технологий Кафедра Безопасности информационных систем ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ ПРЕПОДАВАТЕЛЬ
ЛАБОРАТОРНАЯ РАБОТА №6 Разработка программы, корректно обрабатывающей исключения. по курсу: Кроссплатформенное программирование РАБОТУ ВЫПОЛНИЛ
Санкт-Петербург 2021г. Цель работы. Изучение общих принципов программирования в среде java. Написание приложения, обрабатывающего исключения. Задание на выполнение лабораторной работы. Необходимо создать тестовую программу, содержащую несколько функций, в каждой из которых возникает, перехватывается и обрабатывается одно из видов исключений. Консольное меню должно отражать перечень перехватываемых программой исключений. После выбора того или иного пункта меню, программа должна генерировать соответствующее исключение, перехватывать его и сообщать пользователю результат обработки. Ошибка ввода-вывода. Переполнение массива. Отсутствие файла. Деление на ноль. Собственное исключение произвольного вида. Каждый вид исключений должен возникать и перехватываться в своей собственной функции. Теоретическая часть Исключение — это проблема(ошибка) возникающая во время выполнения программы. Исключения могут возникать во многих случаях, например: Пользователь ввел некорректные данные. Файл, к которому обращается программа, не найден. Сетевое соединение с сервером было утеряно во время передачи данных. И т.д. Все исключения в Java являются объектами. Поэтому они могут порождаться не только автоматически при возникновении исключительной ситуации, но и создаваться самим разработчиком. Операции по их поиску и предотвращению называются обработкой исключений. Для обработки исключений java используются следующие операторы: try, catch, finally, throw, throws. Оператор или часть кода, в которой вам надо отыскать ошибку, помещается в блок try. Далее в блоке catch вы указываете, что за исключение надо ловить и как его обрабатывать. В блоке finally набор обязательных действий при возникновении ошибки. Обычно это запись данных, закрытие ресурсов и пр. Блок исполняется всегда, вне зависимости от срабатывания catch. Ход работы Код программы: package app6; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class APP6 { public static void main(String[] args) { int n = -1; Scanner scan = new Scanner(System.in); while(n != 0) { System.out.println("1. Ошибка ввода-вывода."); System.out.println("2. Переполнение массива."); System.out.println("3. Отсутствие файла."); System.out.println("4. Деление на ноль."); System.out.println("5. Неверный ввод года."); System.out.println("0. Завершение работы."); System.out.print("Выберите нужную позицию: "); n = Integer.parseInt(scan.nextLine()); System.out.println(); switch(n) { case 1: vvodandyvod(); break; case 2: mnogomass(); break; case 3: gdefile(); break; case 4: delenyenol(); break; case 5: NevernyGod(); break; case 0: System.out.println("Завершение работы"); break; default: System.out.println("Значение недействительно"); } } } static void vvodandyvod() { try { File file = new File("file.txt"); BufferedReader reader = new BufferedReader(new FileReader(file)); reader.readLine(); reader.reset(); } catch (IOException ex) { System.out.println("Замечена ошибка ввода-вывода. "+ ex.getMessage()+'\n'); } } static void mnogomass() { try { int test[] = new int[50]; for(int i = 0; i < 51; i++) { test[i] = i; if(i % 10 == 0 && i != 0) System.out.println(); System.out.print(test[i]+" "); } } catch (ArrayIndexOutOfBoundsException ex) { System.out.println("Обработано исключение переполнения массива. "+ ex.getMessage()+'\n'); } } static void gdefile() { try { BufferedReader reader = new BufferedReader(new FileReader("C:/Этого_файла_не_существует.txt")); System.out.println("Файл считан"+ reader.readLine()); } catch (FileNotFoundException ex) { System.out.println("Обработано исключение отсутствия файла!"+ ex.getMessage()+'\n'); } catch (IOException e) { System.out.println("Замечена ошибка ввода-вывода. "+ e.getMessage()+'\n'); } } static void delenyenol() { try { System.out.println("Деление на ноль, получен результат: "); System.out.println(999 / 0); } catch (ArithmeticException ex) { System.out.println("Обработано исключение деления на ноль!" + ex.getMessage()+'\n'); } } static void NevernyGod() { Year p = new APP6().new Year(); try { p.izmgoda(-2001); } catch (NevernyGod e) { System.out.println(e.getMessage()); } } class Year{ String name; private int god; public void izmgoda(int god) throws NevernyGod { if(god > 0) this.god = god; else throw new NevernyGod(god); } public int znachgoda() { return god; } } class NevernyGod extends Exception { public NevernyGod(int god) { super("Замечена ошибка! "+god+" Год не может быть отрицательным"); } } } Результат работы программы: Выводы В ходе выполнения данной лабораторной работы была создана программа, содержащая несколько функций, в каждой из которых возникает, перехватывается и обрабатывается одно из видов исключений. Консольное меню отражает перечень перехватываемых программой исключений. После выбора того или иного пункта меню, программа генерирует соответствующее исключение, перехватывает его и сообщает пользователю результат обработки. |