ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
try
{
double** b = InverseMatrix (a, m, n);
}
catch(char* str)
{
cout << str << endl;
}
catch(int e)
{
cout << "Матрица является вырожденной" << endl;
}
. . .
Отметим, что в приведенном примере генерация исключительных
ситуаций происходит в функции вычисления обратной матрицы, а их
обработка – в вызывающей ее функции. Таким образом, генерация
исключений и их обработка могут быть разделены между различными
функциями.
Если в блоке try присутствуют вызовы нескольких функций,
которые могут генерировать исключения разного вида, следует
предусмотреть обработку каждого из них в вызывающей программе.
Например, в блоке try производится сначала умножение двух матриц,
которое может сгенерировать исключение типа int со значением 1,
когда размеры перемножаемых матриц не соответствуют, а затем
вычисление обратной матрицы:
. . .
double** a, **b; // объявление матриц
int m, n, k, l; // размеры матрицы
. . .
try
{
// умножение матрицы a размерности m x n
// на матрицу b размерности k x l
double** c = MultiplyMatrix (a, m, n, b, k, l);
// получение обратной матрицы для матрицы a
double** d = InverseMatrix (a, m, n);
}
catch(char* s)
{
cout << s << endl;
}
catch(int i)
{
15
Объектно-ориентированное программирование на С++
try
{
double** b = InverseMatrix (a, m, n);
}
catch(char* str)
{
cout << str << endl;
}
catch(int e)
{
cout << "Матрица является вырожденной" << endl;
}
. . .
Отметим, что в приведенном примере генерация исключительных
ситуаций происходит в функции вычисления обратной матрицы, а их
обработка – в вызывающей ее функции. Таким образом, генерация
исключений и их обработка могут быть разделены между различными
функциями.
Если в блоке try присутствуют вызовы нескольких функций,
которые могут генерировать исключения разного вида, следует
предусмотреть обработку каждого из них в вызывающей программе.
Например, в блоке try производится сначала умножение двух матриц,
которое может сгенерировать исключение типа int со значением 1,
когда размеры перемножаемых матриц не соответствуют, а затем
вычисление обратной матрицы:
. . .
double** a, **b; // объявление матриц
int m, n, k, l; // размеры матрицы
. . .
try
{
// умножение матрицы a размерности m x n
// на матрицу b размерности k x l
double** c = MultiplyMatrix (a, m, n, b, k, l);
// получение обратной матрицы для матрицы a
double** d = InverseMatrix (a, m, n);
}
catch(char* s)
{
cout << s << endl;
}
catch(int i)
{
15
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »
