Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Void main ()

Статические конструкторы | SetFullName (fullName); | Ключевое слово sealed | Ключевые слова virtual и override | Абстрактные классы | Полиморфный интерфейс | Сокрытие методов | Правила приведения к базовому и производному классу | Ключевое слово is | Определение вложенных типов |


{

int retVal = SomeFunction ();

if(retVal == E_FILENOTFOUND)

printf ("Cannot find file...");

// He удается найти файл…

}

 

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

Помимо приемов, изобретаемых самими разработчиками, в API- интерфейсе Windows определены сотни кодов ошибок с помощью #define и HRESULT, а также множество вариаций простых булевских значений (bool, BOOL, VARIANTBOOL и т.д.). Более того, многие разработчики СОМ -приложений на языке C++ (а также VB 6) явно или неявно применяют небольшой набор стандартных СОМ -интерфейсов (наподобие ISupportErrorlnfo, IErrorlnfo или ICreateErrorlnfо) для возврата СОМ -клиенту понятной информации об ошибках.

Очевидная проблема со всеми этими более старыми методиками — отсутствие симметрии. Каждая из них более-менее вписывается в рамки какой-то одной технологии, одного языка и, пожалуй, даже одного проекта. Чтобы положить конец всему этому безумству, в .NET была предложена стандартная методика для генерации и выявления ошибок в исполняющей среде, называемая структурированной обработкой исключений (SEH).

Прелесть этой методики состоит в том, что она позволяет разработчикам использовать в области обработки ошибок унифицированный подход, который является общим для всех языков, ориентированных на платформу .NET. Благодаря этому, программист на С# может обрабатывать ошибки почти таким же с синтаксической точки зрения образом, как и программист на VB и программист на C++, использующий C++/CLI. Дополнительное преимущество состоит в том, что синтаксис, который требуется применять для генерации и перехвата исключений за пределами сборок и машин, тоже выглядит идентично. Например, при написании на С# службы Windows Communication Foundation (WCF) генерировать исключение SOAP для удаленного вызывающего кода можно с использованием тех же ключевых слов, которые применяются для генерации исключения внутри методов в одном и том же приложении.

Еще одно преимущество механизма исключений .NET состоит в том, что в отличие от запутанных числовых значений, просто обозначающих текущую проблему, они представляют собой объекты, в которых содержится читабельное описание проблемы, а также детальный снимок стека вызовов на момент, когда изначально возникло исключение. Более того, конечному пользователю можно предоставлять справочную ссылку, которая указывает на определенный URL-адрес с описанием деталей ошибки, а также специальные данные, определенные программистом.

 


Дата добавления: 2015-07-25; просмотров: 72 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Обработка исключений| Составляющие процесса обработки исключений в .NET

mybiblioteka.su - 2015-2024 год. (0.007 сек.)