Книга: C# 4.0: полное руководство
Применение нескольких операторов catch
Применение нескольких операторов catch
С одним оператором try можно связать несколько операторов catch
. И на практике это делается довольно часто. Но все операторы catch должны перехватывать исключения разного типа. В качестве примера ниже приведена программа, в которой перехватываются ошибки выхода за границы массива и деления на нуль.
// Использовать несколько операторов catch.
using System;
class ExcDemo4 {
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 (DivideByZeroException) {
Console.WriteLine("Делить на нуль нельзя!");
}
catch (IndexOutOfRangeException) {
Console.WriteLine("Подходящий элемент не найден.");
}
}
}
}
Вот к какому результату приводит выполнение этой программы.
4/2 равно 2
Делить на нуль нельзя!
16/4 равно 4
32/4 равно 8
Делить на нуль нельзя!
128 / 8 равно 16
Подходящий элемент не найден.
Подходящий элемент не найден.
Как следует из приведенного выше результата, каждый оператор catch
реагирует только на свой тип исключения.
Вообще говоря, операторы catch
выполняются по порядку их следования в программе. Но при этом выполняется только один блок catch
, в котором тип исключения совпадает с типом генерируемого исключения. А все остальные блоки catch
пропускаются.
- Класс System.Exception
- Основы обработки исключительных ситуаций
- Последствия неперехвата исключений
- Обработка исключительных ситуаций - “изящный” способ устранения программных ошибок
- Применение нескольких операторов catch
- Перехват всех исключений
- Вложение блоков try
- Генерирование исключений вручную
- Использование блока finally
- Подробное рассмотрение класса Exception
- Получение производных классов исключений
- Перехват исключений производных классов
- Применение ключевых слов checked и unchecked
- Одновременный запуск нескольких копий сервера (multi-instancing)
- 3.5 Проблемы доступа при использовании нескольких протоколов
- Я работаю на компьютере не один. Как настроить Windows для нескольких пользователей?
- Применение функции scanf( )
- Применение PHP-технологий в программе HtmlPad
- 17.6 Применение агентов новостей для настольных систем
- 2.3. Эмпирическая модель обучения Дэвида Колба и ее применение в практике бизнес-тренинга
- Применение основного потока
- Применение пользовательских атрибутов
- Применение peristaltic.py к арматуре
- Построение диаграммы на основе данных нескольких рабочих листов
- Применение лямбда-выражения в качестве задачи