Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Кросплатформенні засоби програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” / Звіт До Лабораторної роботи №5 З дисципліни: «Кросплатформені засоби програмування» Мета: оволодіти навиками використання механізму виключень при написанні програм мовою Java. ТЕОРЕТИЧНІ ВІДОМОСТІ Виключення – це механізм мови Java, що забезпечує негайну передачу керування блоку коду опрацювання критичних помилок при їх виникненні уникаючи процесу розкручування стеку. Генерація виключень застосовується при: помилках введення, наприклад, при введенні назви неіснуючого файлу або Інтернет адреси з подальшим зверненням до цих ресурсів, що призводить до генерації помилки системним програмним забезпеченням; збоях обладнання; помилках, що пов’язані з фізичними обмеженнями комп’ютерної системи, наприклад, при заповненні оперативної пам’яті або жорсткого диску; помилках програмування, наприклад, при некоректній роботі методу, читанні елементів порожнього стеку, виходу за межі масиву тощо. Ієрархія класів виключень Всі виключення в мові Java поділяються на контрольовані і неконтрольовані та спадкуються від суперкласу Throwable. Безпосередньо від цього суперкласу спадкуються 2 класи Error і Exception (див. рис. 1). Ієрархія класів, що спадкує клас Error, описує внутрішні помилки і ситуації, що пов’язані з браком ресурсів у системі підтримки виконання програм. Жоден об’єкт цього типу самостійно згенерувати неможна. При виникненні внутрішньої помилки можна лише відобразити повідомлення користувачу та спробувати коректно завершити виконання програми. Такі помилки є нечастими. Ієрархія класів, що спадкує клас Exception поділяється на клас RuntimeException та інші. Виключення типу RuntimeException виникають внаслідок помилок програмування. Всі інші помилки є наслідком непередбачених подій, що виникають під час виконання коректної програми, наприклад, помилок вводу/виводу. Класи, що спадкуються від Error та RuntimeException, відносяться до неконтрольованих виключень. Всі інші класи відносяться до контрольованих виключень. Лише контрольовані виключення можуть бути згенеровані програмістом у коді програми явно за допомогою ключового слова throw. Для всіх контрольованих виключень компілятор перевіряє наявність відповідних обробників.      Error   Exception   Інші Інші Неконтрольовані виключення Контрольовані виключення Рис. 1. Ієрархія класів виключень. Створення власних класів виключень   Інші Як правило, власні класи контрольованих виключень використовуються для конкретизації виключних ситуацій, що генеруються стандартними класами контрольованих виключень, з метою їх точнішого опрацювання. Для створення власного класу контрольованих виключень необхідно обов’язково успадкувати один з існуючих класів контрольованих виключень та розширити його новою функціональністю. Найчастіше власні класи оснащують конструктором по замовчуванню та конструктором, що приймає детальний опис ситуації, яка призвела до генерації виключення. Для відображення опису помилкової ситуації можна використати метод toString() класу Throwable. Для цього необхідно викликати відповідний конструктор класу, що розширяється. Після цього створений клас можна застосовувати для генерації виключень. Приклад власного класу виключень: class FileFormatException extends IOException { public FileFormatException() {} public FileFormatException(String message) { /* Даний виклик конструктора суперкласу дозволяє використовувати метод toString() класу Throwable */ super(message); } } Оголошення контрольованих виключень Виключення можуть генеруватися лише методами. Якщо метод може генерувати виключення певного класу, то назву цього класу слід вказати в заголовку методу після ключового слова throws. Якщо метод може генерувати кілька видів виключень, то всі вони перелічуються через кому. Приклад оголошення методу, що може генерувати виключення: public int loadData(String fName) throws EOFException, MalformedURLException { … } Слід зауважити, що оголошення всіх можливих виключень, які може генерувати метод, є поганим стилем програмування. Оголошувати слід лише всі контрольовані виключення. Якщо цього не зробити, то компілятор видасть повідомлення про помилку. Якщо метод оголошує, що він може генерувати виключення певного класу, то він може також генерувати виключення і його підкласів. Наприклад, оголошення методу int loadData(String fName) можна переписати наступним чином, не конкретизуючи, яке саме виключення похідне від класу IOException ми генеруватимемо: public int loadData(String fName) throws IOException, MalformedURLException { … } Проте зауважимо, що метод підкласу не може генерувати більш загальне контрольоване виключення, ніж метод суперкласу, що перевизначається. Виключення можуть лише конкретизуватися або не виникати взагалі. Зокрема, якщо метод суперкласу не генерує контрольованих виключень взагалі, то і метод підкласу не може їх генерувати. Проте в цьому випадку виключення можуть бути згенеровані і перехоплені в середині такого методу. Виконання лабораторної роботи Завдання: Варіант – 14 - y=cos(x)/tg(2x) Створити клас, що реалізує метод обчислення виразу заданого варіантом. Написати на мові Java та налагодити програму-драйвер для розробленого класу. Результат обчислень записати у файл. При написанні програми застосувати механізм виключень для виправлення помилкових ситуацій, що можуть виникнути в процесі виконання програми. Програма має розміщуватися в пакеті Група.Прізвище.Lab5 Код програми: package ki43.karabas.Lab5; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Scanner; import static java.lang.System.out; public class Main { public static void main(String[] args) { try { out.print("Enter file name: "); Scanner in = new Scanner(System.in); String fName = in.nextLine(); PrintWriter fout = new PrintWriter(new File(fName)); try { try { ExpressionCalculator eq = new ExpressionCalculator(); out.print("Enter X: "); fout.print(eq.calculate(in.nextInt())); } finally { fout.flush(); fout.close(); } } catch (CalculationException ex) { out.print(ex.getMessage()); } } catch (FileNotFoundException ex) { out.print("Exception reason: Perhaps wrong file path"); } } } package ki43.karabas.Lab5; class CalculationException extends ArithmeticException { public CalculationException() { } public CalculationException(String cause) { super(cause); } } public class ExpressionCalculator { public double calculate(double x) { double y; try { double rad1 = x * Math.PI / 180.0; double rad2 = 2 * x * Math.PI / 180.0; y = Math.cos(rad1) / Math.tan(rad2); if (y == Double.NEGATIVE_INFINITY || y == Double.POSITIVE_INFINITY || x == 90 || x == -90) throw new ArithmeticException(); } catch (ArithmeticException e) { throw new CalculationException("Can't calculate value for " + x); } return y; } } Результат виконання: Enter file name: res.txt Enter X: 360 -2.0414049191494212E15 Висновок: на даній лабораторній роботі я оволодів навиками використання механізму виключень при написанні програм мовою Java.
Антиботан аватар за замовчуванням

24.11.2018 18:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!