Класс 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; } } 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
⇑
Связанные темы
- Исключения. Исключительная ситуация. Ключевые слова try, catch, finally. Примеры
- Операторы throw, throws. Примеры
- Классы Java для обработки исключительных ситуаций из пакета java.lang. Методы класса Throwable. Примеры
⇑