Главная » C# » Обработка исключений в С#

0

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

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

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

В этой главе мы рассмотрим исключения (как называются ошибки программного обеспечения на техническом жаргоне) и их обработку. Начнем с рассмотрения раоложения исключений в общей структуре программы.

Ошибки, исключения и обработка исключений

Ошибка возникает, когда программа по каким-либо причинам, например в резулате ввода неправильных данных или неправильно указанных вычислений, не волняется должным образом. Но среда CLR .NET  не понимает ошибок, а только исключения.

Например, если ошибка  вызвана  умножением  двух  чисел  вместо  их  сложения, то программа будет продолжать работать, но выдаст неправильные результаты. Подобная ошибка происходит при вводе пользователем неверных данных — рультат будет неправильным, но программа будет продолжать работать.

В случае серьезной проблемы, которая  не  может быть  разрешена  пользователем или может вызвать сбой программы, к обработке этой ошибки подключается среда CLR. Такие ошибки называются исключениями. Вместо того чтобы позволить прзойти программному сбою, среда CLR останавливает штатное исполнение прраммы и предоставляет возможность обработать исключение самой программой. (Некоторые придирчивые к подробностям программисты могут спорить, что оставливается исполнение не всей программы, но только одного из ее потоков. Хотя технически они будут правы, для данного обсуждения исключений это не является существенной  разницей.) Это  называется  обработкой исключений.

Чтобы получить представление о том, каким образом организация кода влияет на обработку исключений, представьте себе программу, как крупную корпорацию. Корпорация имеет генерального директора, менеджеров первого уровня, менеджов среднего уровня и т. д. до простых работников. Руководство корпорации понает, что для  того чтобы осуществить поставленные перед корпорацией задачи, нужно разработать план действий и следовать этому плану. Генеральный директор и руководители высшего уровня будут знать весь план  действий. А выполнение отдельных пунктов плана возлагается на руководителей более низкого уровня и подчиненных им рабочих. Результатом выполнения всех отдельных положений плана этими организационными единицами будет реализация всего плана.

Применив эту концепцию к области разработки программного обеспечения, можно выделить два типа методов: методы для организации функциональности и методы для реализации этой функциональности. Организационный код создается для того, чтобы можно было разбить всю задачу на отдельные индивидуальные рабочие едицы. Исполнение одной такой рабочей единицы кода не влияет на исполнение другой, и таким образом мы получаем модульную программу.

ПРИМЕЧАНИЕ

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

Теперь посмотрим, какое место в этой организационной схеме занимают искления.  Если  происходит  что-то  непредвиденное  планом,  то  мы  имеем  ошибку. В управленческой  иерархии  генеральному директору обычно не докладывают обо всех происшедших нештатных ситуациях. Например, вряд ли  ему было  бы интесно узнать о том, что в офисе кончились скобки для степлеров. Но ему опреденно захотелось бы узнать о выходе из строя главной производственной линии. Иными словами, информация об ошибках передается вверх по инстанциям до тако уровня, для какого определенный тип ошибок представляет интерес.

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

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

При разработке средств обработки исключений часто полезно исполнять разрабываемое приложение в отладчике Visual С# Express, поэтому мы начнем с озномления с данным отладчиком.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии