Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obektno-orientirovannoe_programmirovanie.doc
Скачиваний:
14
Добавлен:
19.08.2019
Размер:
271.36 Кб
Скачать

18. Способы обработки ошибок.

В языке C# ошибки в программе во время выполнения передаются через программу посредством механизма, называемого исключениями. Исключения создаются кодом, который встречает ошибку и перехватываются кодом, который может исправить ее. Исключения могут создаваться средой CLR платформы .NET Framework или кодом в программе. В случае исключения, оно передается по стеку вызовов пока не будет найден оператор catch для исключения. Не перехваченные исключения обрабатываются универсальным обработчиком исключений, предоставляемым системой, который открывает диалоговое окно.

Исключения представляются посредством классов, производных от Exception. Такой класс устанавливает тип исключения и содержит свойства с подробными сведениями об исключении. При генерации исключения создается экземпляр класса, производного от исключения, настраиваются свойства исключения (необязательно), а затем при помощи ключевого слова throw создается объект.

Для генерации исключений используется ключевое слово throw. Обычно у него один операнд который может содержать информацию об исключении, которое произошло. Если интересен только тип объекта исключения, то имя в обработчике catch можно не указывать. Из иерархии наследования может оказаться, что объект производного класса может быть перехвачен как обработчик объектов данного класса, так и обработчик объектов любого базового класса от которого он порожден.

Class A{};

Class B:public A{};

B b; throw B;

Try {catch (B eb) {…}

catch (A ea) {…}

Возможно, что обработчик, который перехватывает исключения решит, что он сам не может обработать исключение. В этом случае обработчик может сгенерировать исключение повторно, тогда вызывается throw без параметров catch(B eb) {throw;}.

Можно ограничить типы исключений, которые могут генерироваться данной ф-цией.

Void f() throw (A,B) Void f() throw () Void f()

19. Платформа .Net: основные компоненты в c#.

Средой выполнения люб. программы явл. ОС, которая в свою очередь опирается на аппаратную платформу. Сейчас рынок делят windows, Unix, Linux. После того как Microsoft и SunMicrosystems не поделили межплатформенный язык Java, широкоиспользующийся для создания WAP приложений, в 2001 возникла платформа .NET. Платформа для разработки и исполнения прикладных программ. Платформа – это концепция, спецификация и набор вполне конкретных объектов. Основной идеей .NET Framework стала общая среда исполнения (Common Language Runtime-CLR). Общее для всех приложений .NET в независимости от языка их создания и программно-аппаратной платформы, на которой они должны исполняться. В связи с этим весь код программы разделен на 2 группы: неуправляемые приложения (unmanaged) и управляемые приложения, выполняемые под управлением CLR.

Для создания программного кода могут использоваться любые .NET совместимые языки. При компиляции код на этих языках перерабатывается в код на промежуточном языке (Intermediate Language-IL). Данный язык является платформонезависимым. Сущ. возможность писать программы непосредственно на IL. Двоичные файлы, написанные на IL, называются сборками (assembly).

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

Сама CLR состоит из 2 компонент: ядро (физически – это файл mscore.dll) и библиотека базовых классов.

При запуске какого-либо .NET приложения в память автоматически загружается ядро платформы, и после этого процесс управления приложением целиком передается ядру. Ядро управляет процессом загрузки сборки в память, а так же процессом загрузки других сборок, требующихся для работы данных. После того как сборка загружена выполняется процесс ее окончательной компиляции. Занимается этим компилятор по требованию (Just-In-Time Compiler). Откомпилированные таким образом сборки загружаются в кэш и при повторном обращении будут вызваны от туда. Дополнительной компиляции не потребуется.

Одним из основных преимуществ .NET явл. сильное межъязыковое взаимодействие. Для того, чтобы различные типы правильно воспринимались средой .NET их определения должны соответствовать специально разработанной спецификации, которая называется стандартная система типов (Common Type System-CTS). Она определяет концепции для классов, структур, интерфейсов, перечислений, компонентов типов и делегатов. Так же в CTS предусмотрен ряд встроенных типов, единый для всех языков программирования. Однако не все языки программирования могут работать со всеми встроенными типами. Например, Basic не поддерживает знаковые и беззнаковые типы. В связи с этим был разработан набор правил, соответствие которому гарантирует нормальное межъязыковое взаимодействие (Common Language Specification-CLS). Из этого, однако, не следует, что в классе на C# нельзя перегружать операторы. Просто для CLS совместимости наряду с перегруженным оператором необходим его метод аналог.