Клас Exception. Створення власних класів виключень. Приклади
Зміст
- 1. Призначення класу Exception. Створення власних підкласів виключень
- 2. Приклад створення класу Triangle. Обчислення площі трикутника з використанням власного класу виключення TriangleException
- Зв’язані теми
Пошук на інших ресурсах:
1. Призначення класу Exception. Створення власних підкласів виключень
Клас Exception є базовим для усіх користувацьких класів у програмі. Для того, щоб створити клас власного виключення, достатньо визначити його як похідний від класу Exception. Оскільки клас Exception є похідний від класу Throwable, то в класі Exception є доступні усі методи з класу Throwable.
Тобто, при оголошенні класу MyExceptionClass на зразок
class MyExceptionClass extends Exception { }
екземпляр цього класу зможе використовувати усі методи класу Throwable. У нижченаведеному коді продемонстровано використання методу getMessage() з класу Throwable.
public class TrainException { public static void main(String[] args) { MyExceptionClass mc = new MyExceptionClass(); String str = mc.getMessage(); System.out.println("str = " + str); } }
Результат виконання функції main()
str = null
Отже, у власних реалізованих підкласах що успадковані від класу Exception, не обов’язково реалізовувати власні методи. Часто буває достатньо методів базового класу Throwable.
⇑
2. Приклад створення класу Triangle. Обчислення площі трикутника з використанням власного класу виключення TriangleException
У прикладі демонструється створення власного класу TriangleException для обробки виключення “неправильно задані сторони трикутника”.
Оголошується два класи:
- Triangle – реалізує трикутник за його сторонами a, b, c;
- TriangleException – реалізує перехоплення виключної ситуації “неправильно задані сторони трикутника”.
Текст програми наступний:
import java.util.Scanner; // Створення власного класу виключення TriangleException // Створення власного класу Triangle, що реалізує трикутник за його сторонами // оголосити власний клас виключення class TriangleException extends Exception { // перевизначити метод toString(), який описує виключення public String toString() { return "Error. Bad sides of triangle."; } } // оголосити клас трикутник class Triangle { // сторони трикутника private double a,b,c; // конструктор за замовчуванням public Triangle() { // рівносторонній трикутник з довжиною сторони 1 a = b = c = 1; } // параметризований конструктор public Triangle(double _a, double _b, double _c) { // використання класу виключення TriangleException try { // чи взагалі з сторін _a, _b, _c можна утворити трикутник if (((_a+_b)<_c)||((_a+_c)<_b)||((_b+_c)<_a)) throw new TriangleException(); } catch(TriangleException e) { System.out.println("Exception: "+e.toString()); return; } // якщо сторони трикутника введені коректно, // записати їх у внутрішні змінні класу a = _a; b = _b; c = _c; } // метод, що повертає площу трикутника public double getArea() { // якщо сторони трикутника мають коректні розміри, // то перевірку на корінь з від'ємного числа не потрібно робити double p, s; p = (a+b+c)/2; // півпериметр s = Math.sqrt(p*(p-a)*(p-b)*(p-c)); // формула Герона return s; } } // клас, що містить функцію main() public class Train04 { // функція main() тестує роботу класів Triangle та TriangleException public static void main(String[] args) { double a, b, c; Scanner in = new Scanner(System.in); // ввід a, b, c System.out.print("a = "); a = in.nextDouble(); System.out.print("b = "); b = in.nextDouble(); System.out.print("c = "); c = in.nextDouble(); // обчислення площі Triangle tr = new Triangle(a,b,c); double area = tr.getArea(); System.out.println("area = " + area); in.close(); } }
Клас TriangleException є успадкований від класу Exception, який, в свою чергу, успадкований від класу Throwable. Таким чином, у класі TriangleException є доступні методи класу Throwable, у тому числі метод toString(), який описує виключення. Клас TriangleException перевизначає метод toString() класу Throwable. Це робиться з метою більшої конкретизації опису самого виключення.
У функції main() для того, щоб ввести дані, використовується клас Scanner з пакету java.util. Тому на початку програми вводиться команда
import java.util.Scanner;
Результат роботи програми у випадку, якщо ввести неправильні дані
a = 3 b = 1 c = 1 Exception: Error. Bad sides of triangle. area = 0.0
Результат роботи програми у випадку, якщо ввести коректні дані
a = 2 b = 2 c = 2 area = 1.7320508075688772
⇑
Зв’язані теми
- Виключення (exceptions). Виключна ситуація. Ключові слова try, catch, finally
- Оператори throw, throws. Приклади
- Класи Java для обробки виключних ситуацій з пакету java.lang. Методи класу Throwable. Приклади
⇑