Объектно-ориентированное программирование на С#. Андрианова А.А - 115 стр.

UptoLike

115
Console.WriteLine("Такие матрицы перемножить
нельзя из-за неправильных размеров");
}
}
Используя иерархию классов-исключений, все виды ошибок можно
обработать универсальным образом с помощью только одного обработчика
catch типа ссылки на объект базового класса:
. . .
try
{
// в этом фрагменте кода может возникнуть исключение
// некорректных размеров при создании матрицы и при
// перемножении двух матриц
Matrix x, y, z;
x = new Matrix(2, 3);
y = new Matrix(3, 4);
x.InputMatrix();
y.InputMatrix();
z = x * y;
z.OutputMatrix();
}
catch (MatrixException ex)
{
// общий обработчик исключений-наследников
// класса MatrixException
// вызов метода обработки исключения того класса,
// которому принадлежит объект ex
ex.ExceptionHandler();
}
. . .
В зависимости от возникающей ошибки согласно принципу
полиморфизма ссылка на базовый класс будет указывать на объект
производного класса, соответствующего типу ошибки. Тогда в обработчике
catch будет вызываться метод ExceptionHandler() именно этого
класса.
           Console.WriteLine("Такие матрицы перемножить
                           нельзя из-за неправильных размеров");
       }
   }

     Используя иерархию классов-исключений, все виды ошибок можно
обработать универсальным образом с помощью только одного обработчика
catch типа ссылки на объект базового класса:

     .     .    .
   try
   {
       // в этом фрагменте кода может возникнуть исключение
       // некорректных размеров при создании матрицы и при
       // перемножении двух матриц
       Matrix x, y, z;
       x = new Matrix(2, 3);
       y = new Matrix(3, 4);

       x.InputMatrix();
       y.InputMatrix();
       z = x * y;
       z.OutputMatrix();
   }
   catch (MatrixException ex)
   {
       // общий обработчик исключений-наследников
       // класса MatrixException
       // вызов метода обработки исключения того класса,
       // которому принадлежит объект ex
       ex.ExceptionHandler();
   }
     .     .    .

     В зависимости от возникающей ошибки согласно принципу
полиморфизма ссылка на базовый класс будет указывать на объект
производного класса, соответствующего типу ошибки. Тогда в обработчике
catch будет вызываться метод ExceptionHandler() именно этого
класса.




                                                                   115