ВУЗ:
Составители:
Рубрика:
113
catch (DimensionProductException ex)
{
// вызов обработчика исключения, связанного
// умножением матриц
ex.ExceptionHandler();
}
catch (BadDimensionException ex)
{
// вызов обработчика исключения, связанного
// созданием матрицы некорректного размера
ex.ExceptionHandler();
}
. . .
Согласно принципу полиморфизма можно создавать один обработчик
catch для нескольких видов исключений. Если имеется иерархия классов-
исключений, достаточно создавать обработчик catch только для
исключения базового типа. Универсальная обработка исключений-
наследников производится с помощью переопределения виртуальных
функций базового класса.
Например, создадим абстрактный базовый класс иерархии – класс
MatrixException. В нем объявим абстрактный метод
ExceptionHandler(), который предназначен для обработки ошибки. Все
классы-исключения теперь должны наследовать от класса
MatrixException и переопределять абстрактный метод
ExceptionHandler() этого класса. Классы-наследники могут содержать
и другие методы, которые позволяют, если не устранить ошибку, то хотя бы
предотвратить ее влияние на последующий ход выполнения программы
(корректное освобождение ресурсов, занимаемых объектом, присвоение
переменным объекта корректных значений и пр.). Вызвать эти методы можно
из метода ExceptionHandler() конкретного класса.
Таким образом, иерархия классов исключений может быть
представлена в следующем виде:
catch (DimensionProductException ex)
{
// вызов обработчика исключения, связанного
// умножением матриц
ex.ExceptionHandler();
}
catch (BadDimensionException ex)
{
// вызов обработчика исключения, связанного
// созданием матрицы некорректного размера
ex.ExceptionHandler();
}
. . .
Согласно принципу полиморфизма можно создавать один обработчик
catch для нескольких видов исключений. Если имеется иерархия классов-
исключений, достаточно создавать обработчик catch только для
исключения базового типа. Универсальная обработка исключений-
наследников производится с помощью переопределения виртуальных
функций базового класса.
Например, создадим абстрактный базовый класс иерархии – класс
MatrixException. В нем объявим абстрактный метод
ExceptionHandler(), который предназначен для обработки ошибки. Все
классы-исключения теперь должны наследовать от класса
MatrixException и переопределять абстрактный метод
ExceptionHandler() этого класса. Классы-наследники могут содержать
и другие методы, которые позволяют, если не устранить ошибку, то хотя бы
предотвратить ее влияние на последующий ход выполнения программы
(корректное освобождение ресурсов, занимаемых объектом, присвоение
переменным объекта корректных значений и пр.). Вызвать эти методы можно
из метода ExceptionHandler() конкретного класса.
Таким образом, иерархия классов исключений может быть
представлена в следующем виде:
113
Страницы
- « первая
- ‹ предыдущая
- …
- 111
- 112
- 113
- 114
- 115
- …
- следующая ›
- последняя »
