catch { обработка всех остальных исключений } Некоторые важные свойства класса Exception:
Message – текстовое описание ошибки (только для чтения);
Source – имя объекта, сгенерировавшего ошибку;
TargetSite – метод, сгенерировавший ошибку;
InnerException – ссылка на исключение, послужившее причиной текущего.
Пример1
Обнаружениеиобработкаошибкаделенияна 0.
Создадим проект сon151. Наберем код программы в теле метода Main:
Console.Write("Введите делимое ");
int a = int.Parse(Console.ReadLine()); Console.Write("Введите делитель "); int b = int.Parse(Console.ReadLine());
// в проверяемый блок включим операцию деления и вывод результата
try { Console.WriteLine(a / b); } // обработка ошибки деления на 0 и вывод системного сообщения
catch (DivideByZeroException e)
{ Console.WriteLine(e.Message); } // обработка неопознанной ошибки, вывод собственного сообщения catch { Console.WriteLine("Произошла ошибка"); } Console.ReadKey();
Протестируем программу. Сравним рeзультаты обработки исключений при вводе различных целых чисел и 0.
Закомментируем первый блок catch. Сравним рeзультаты в этом случае.
Снимем комментирование. Будем поочередно изменять тип переменных
a и b на double: double a = double.Parse(Console.ReadLine());
Сравним рeзультаты обработки исключений.
Пример2 Задан строковый массив дней недели. Составим программу, которая повведенномуномерувыводитназваниеднянеделииколичестводнейдоВс,а также обрабатывает ошибки формата ввода и выхода индекса за границымассива. Создадим проект сon152. Наберем код программы в теле метода Main:
// создадим массив дней недели
string[] dw = { "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" }; Console.Write("Введите номер дня недели (0 ‐ 6) ");
// в проверяемый блок включим ввод номера и вывод сообщения
try { int i = int.Parse(Console.ReadLine()); Console.WriteLine("{0}, до Вс {1} дней", dw[i], 6 ‐ i);