Отправляет email-рассылки с помощью сервиса Sendsay

Изучаем .NET Framework

  Все выпуски  

Изучаем .NET Framework


Информационный Канал Subscribe.Ru


Библиотека .NET Framework. Выпуск 4.

Структурная обработка исключений.

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

Для отлавливания исключительных ситуаций в .NET языках существует конструкция try catch . В разных языках она реализована по своему, но общая схема работы остается одинаковой. В блок try помещается код, в котором могут возникать ошибки. При возникновении исключения в блоке try его выполнение прекращается и управление передается блоку catch. Если исключительная ситуация возникла вне блока try, то выполнение программы прекращается.

При программировании собственных компонентов программы часто возникает необходимость генерировать собственные исключения. В языке C# это можно сделать с помощью ключевого слова throw. Конечно вы можете написать функцию, которая возвращает код ошибки, но этот метод имеет два недостатка. Во-первых, необходимо все время проверять возвращаемое значение, что сильно отвлекает программиста от создания программы. Во-вторых, необходимо точно знать соответствие между реальной ошибкой и кодом, возвращаемым функцией.

А теперь рассмотрим все выше сказанное на примере.


using System;

class MainClass
{
      /// <summary>
      /// Если digit == 0, то генерируется исключение
      /// </summary>
      /// <param name="digit">Число</param>
      static void CheckForZero(int digit)
      {
            if(digit == 0)
                  throw new Exception("Параметр digit не должен быть равен нулю");
            Console.WriteLine("{0}: OK", digit);
      }

      /// <summary>
      /// Главная функция приложения
      /// </summary>

      static void Main()
      {
            try
            {
                  CheckForZero(1);
                  //Здесь генерируется исключение
                  CheckForZero(0);
            }
            catch(Exception e)
            {
                  Console.WriteLine(e.Message);
            }
      }
}

Результат работы программы:

1: OK
Параметр digit не должен быть равен нулю 

Полную версию примера можно взять здесь

Если у вас возникли какие-то вопросы, или предложения, присылайте их по адресу msdotnet@mail.ru
С уважением Олег.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное