Книга: C# 4.0: полное руководство

Перехват всех исключений

Перехват всех исключений

Время от времени возникает потребность в перехвате всех исключений независимо от их типа. Для этой цели служит оператор catch, в котором тип и переменная исключения не указываются. Ниже приведена общая форма такого оператора.

catch {
  // обработка исключений
}

С помощью такой формы создается "универсальный" обработчик всех исключений, перехватываемых в программе.

Ниже приведен пример такого "универсального" обработчика исключений. Обратите внимание на то, что он перехватывает и обрабатывает оба исключения, IndexOutOfRangeException и DivideByZeroException, генерируемых.в программе.

// Использовать "универсальный" обработчик исключений.
using System;
class ExcDemo5 {
  static void Main() {
    // Здесь массив numer длиннее массива denom.
    int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 };
    int[] denom = { 2, 0, 4, 4, 0, 8 };
    for (int i=0; i < numer.Length; i++)    {
      try {
        Console.WriteLine(numer[i] + " / " +
              denom[i] + " равно " + numer[i]/denom[i]);
      }
      catch { // "Универсальный" перехват.
        Console.WriteLine ("Возникла некоторая исключительная ситуация.");
      }
    }
  }
}

При выполнении этой программы получается следующий результат.

4/2 равно 2
Возникла некоторая исключительная ситуация.
16/4 равно 4
32/4 равно 8
Возникла некоторая исключительная ситуация.
128 / 8 равно 16
Возникла некоторая исключительная ситуация.
Возникла некоторая исключительная ситуация.

Применяя "универсальный" перехват, следует иметь в виду, что его блок должен располагаться последним по порядку среди всех блоков catch.

-------------------------------------

ПРИМЕЧАНИЕ

В подавляющем большинстве случаев “универсальный” обработчик исключений не применяется. Как правило, исключения, которые могут быть сгенерированы в коде, обрабатываются по отдельности. Неправильное использование “универсального" обработчика может привести к тому, что ошибки, перехватывавшиеся при тестировании программы, маскируются. Кроме того, организовать надлежащую обработку всех исключительных ситуаций в одном обработчике не так-то просто. Иными словами, “универсальный" обработчик исключений может оказаться пригодным лишь в особых случаях, например в инструментальном средстве анализа кода во время выполнения.

--------------------------------------

Оглавление книги


Генерация: 0.075. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз