Объектно-ориентированное программирование на C++. Андрианова А.А - 16 стр.

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
if (i == 0)
cout << "Матрица является вырожденной" << endl;
if(i == 1)
cout << "Матрицы таких размеров перемножать нельзя"
<< endl;
}
. . .
В этом случае возникновение ошибки при выполнении операции
перемножения матриц приведет к ее обработке и передаче управления
операторам, которые следуют за блоком try {. . .} catch. Таким
образом, вычисление обратной матрицы производиться не будет, даже
если это можно сделать без каких-либо ошибок. Такой подход обычно
используют, когда операторы блока try образуют взаимосвязанную
последовательность действий и без корректного выполнения
предшествующих действий невозможно правильно выполнить
следующие.
Можно действовать по-другому разбить контролируемый блок на
части, каждой из которых будет соответствовать свой набор исключений.
Далее каждая часть заключается в свой собственный блок try:
. . .
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);
}
catch(int i)
{
cout << "Матрицы таких размеров перемножать нельзя"
<< endl;
}
try
{
// получение обратной матрицы для матрицы a
double** d = InverseMatrix (a, m, n);
}
catch(char* s)
{
cout << s << endl;
}
catch(int i)
16
                              Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
          if (i == 0)
               cout << "Матрица является вырожденной" << endl;
          if(i == 1)
          cout << "Матрицы таких размеров перемножать нельзя"
                                                              << endl;
     }
     .    .    .

    В этом случае возникновение ошибки при выполнении операции
перемножения матриц приведет к ее обработке и передаче управления
операторам, которые следуют за блоком try {. . .} catch. Таким
образом, вычисление обратной матрицы производиться не будет, даже
если это можно сделать без каких-либо ошибок. Такой подход обычно
используют, когда операторы блока try образуют взаимосвязанную
последовательность действий и без корректного выполнения
предшествующих      действий    невозможно     правильно    выполнить
следующие.
    Можно действовать по-другому – разбить контролируемый блок на
части, каждой из которых будет соответствовать свой набор исключений.
Далее каждая часть заключается в свой собственный блок try:

     .    .    .
     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);
     }
     catch(int i)
     {
          cout << "Матрицы таких размеров перемножать нельзя"
                                                       << endl;
     }
     try
     {
          // получение обратной матрицы для матрицы a
          double** d = InverseMatrix (a, m, n);
     }
     catch(char* s)
     {
          cout << s << endl;
     }
     catch(int i)

16