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

UptoLike

109
6.3. Создание иерархии исключений
Обработка исключений является удобным способом предотвращения
аварийного завершения программы в случае попытки выполнения каких-
либо некорректных действий. Для этого используется класс Exception
пространства имен System, с помощью которого передается информация о
возникшей проблеме. Когда же в программе требуется предусмотреть
возможность появления различных по типу и обработке исключительных
ситуаций, использовать один класс Exception и соответствующий ему
обработчик catch становится неудобным, так как обработчик должен
включать в себя все возможные обработки исключительных ситуаций.
Рассмотрим такую ситуацию на примере. При работе с матрицами
исключительные ситуации могут возникнуть в случаях, когда:
конструктор получает неположительные значения количества
строк или столбцов;
происходит обращение к элементу матрицы по некорректным
индексам;
при выполнении операции сложения размеры двух матриц не
совпадают;
при выполнении операции умножения количество столбцов
первой матрицы не совпадает с количеством строк второй
матрицы;
при вычислении обратной матрицы исходная матрица
оказывается вырожденной.
Если во всех этих случаях пользователю необходимо показать только
сообщение об ошибке и прервать выполнение блока try, то достаточно
использовать только стандартное исключение Exception, передав в его
поле Message необходимое сообщение. Однако если требуется более
сложная обработка ошибки, например, корректировка данных, приведение
матриц к определенному виду и повторное выполнение операции, вызвавшей
исключение единый обработчик будет сложным и неудобным:
try
{
// код, в котором могут возникнуть
// исключения с матрицами
}
                     6.3. Создание иерархии исключений

     Обработка исключений является удобным способом предотвращения
аварийного завершения программы в случае попытки выполнения каких-
либо некорректных действий. Для этого используется класс Exception
пространства имен System, с помощью которого передается информация о
возникшей проблеме. Когда же в программе требуется предусмотреть
возможность появления различных по типу и обработке исключительных
ситуаций, использовать один класс Exception и соответствующий ему
обработчик catch становится неудобным, так как обработчик должен
включать в себя все возможные обработки исключительных ситуаций.
     Рассмотрим такую ситуацию на примере. При работе с матрицами
исключительные ситуации могут возникнуть в случаях, когда:
         конструктор получает неположительные значения количества
           строк или столбцов;
         происходит обращение к элементу матрицы по некорректным
           индексам;
         при выполнении операции сложения размеры двух матриц не
           совпадают;
         при выполнении операции умножения количество столбцов
           первой матрицы не совпадает с количеством строк второй
           матрицы;
         при вычислении обратной          матрицы исходная матрица
           оказывается вырожденной.
     Если во всех этих случаях пользователю необходимо показать только
сообщение об ошибке и прервать выполнение блока try, то достаточно
использовать только стандартное исключение Exception, передав в его
поле Message необходимое сообщение. Однако если требуется более
сложная обработка ошибки, – например, корректировка данных, приведение
матриц к определенному виду и повторное выполнение операции, вызвавшей
исключение – единый обработчик будет сложным и неудобным:

   try
   {
       // код, в котором могут возникнуть
       // исключения с матрицами
   }

                                                                   109