Языки программирования

Содержание

Слайд 2

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

Иногда при выполнении программы возникают ошибки, которые трудно предусмотреть или предвидеть,

Обработка исключений Иногда при выполнении программы возникают ошибки, которые трудно предусмотреть или
а иногда и вовсе невозможно.
Такие ситуации называются исключениями.
Язык C# предоставляет разработчикам возможности для обработки таких ситуаций.
Для этого в C# предназначена конструкция try...catch...finally.

Слайд 3

Конструкция try..catch..finally

При использовании блока try...catch..finally вначале выполняются все инструкции в блоке try. Если в этом

Конструкция try..catch..finally При использовании блока try...catch..finally вначале выполняются все инструкции в блоке
блоке не возникло исключений, то после его выполнения начинает выполняться блок finally. И затем конструкция try..catch..finally завершает свою работу.
Если же в блоке try вдруг возникает исключение, то обычный порядок выполнения останавливается, и среда CLR начинает искать блок catch, который может обработать данное исключение. Если нужный блок catch найден, то он выполняется, и после его завершения выполняется блок finally.
Если нужный блок catch не найден, то при возникновении исключения программа аварийно завершает свое выполнение.

Слайд 4

Типы исключений. Класс Exception

Базовым для всех типов исключений является тип Exception. Этот тип

Типы исключений. Класс Exception Базовым для всех типов исключений является тип Exception.
определяет ряд свойств, с помощью которых можно получить информацию об исключении.
InnerException: хранит информацию об исключении, которое послужило причиной текущего исключения
Message: хранит сообщение об исключении, текст ошибки
Source: хранит имя объекта или сборки, которое вызвало исключение
StackTrace: возвращает строковое представление стека вызывов, которые привели к возникновению исключения
TargetSite: возвращает метод, в котором и было вызвано исключение

Слайд 5

Типы исключений. Класс Exception

Однако так как тип Exception является базовым типом для

Типы исключений. Класс Exception Однако так как тип Exception является базовым типом
всех исключений, то выражение catch (Exception ex) будет обрабатывать все исключения, которые могут возникнуть.
Но также есть более специализированные типы исключений, которые предназначены для обработки каких-то определенных видов исключений:
DivideByZeroException: представляет исключение, которое генерируется при делении на ноль
ArgumentOutOfRangeException: генерируется, если значение аргумента находится вне диапазона допустимых значений
ArgumentException: генерируется, если в метод для параметра передается некорректное значение
IndexOutOfRangeException: генерируется, если индекс элемента массива или коллекции находится вне диапазона допустимых значений
InvalidCastException: генерируется при попытке произвести недопустимые преобразования типов
NullReferenceException: генерируется при попытке обращения к объекту, который равен null (то есть по сути неопределен)
И при необходимости мы можем разграничить обработку различных типов исключений, включив дополнительные блоки catch

Слайд 6

Создание классов исключений

Если нас не устраивают встроенные типы исключений, то мы

Создание классов исключений Если нас не устраивают встроенные типы исключений, то мы
можем создать свои типы. Базовым классом для всех исключений является класс Exception, соответственно для создания своих типов мы можем унаследовать данный класс.

Слайд 7

Упаковка (boxing) и распаковка (unboxing).

Представляют собой механизм преобразования размерных типов данных языка C# из значимых в

Упаковка (boxing) и распаковка (unboxing). Представляют собой механизм преобразования размерных типов данных
ссылочные и обратно через задействование свойств фундаментального базового класса Object.

Слайд 8

Упаковка

В языке C# упаковка работает как неявное преобразование экземпляра любого размерного

Упаковка В языке C# упаковка работает как неявное преобразование экземпляра любого размерного
типа в объект базового класса Object, которое происходит, когда компилятор наталкивается на значимый тип в том контексте, где ожидается появление ссылки.
Это преобразование автоматически производится библиотекой CLR причём его выполнение не зависит от того, какой именно тип передан как входной — ссылочный или значимый.

Слайд 9

Алгоритм упаковки

Трансформация значимого типа в ссылочный осуществляется автоматически, для этого выполняются следующие

Алгоритм упаковки Трансформация значимого типа в ссылочный осуществляется автоматически, для этого выполняются
шаги:
выделение необходимых ресурсов памяти для размещения нового объекта в «куче».
поля значимого типа копируются в динамически выделенную память.
возвращается адрес полученного объекта в виде ссылочного типа.

Слайд 10

Распаковка

Распаковка ссылочного типа в значимый подразумевает, что это должно быть выполнено

Распаковка Распаковка ссылочного типа в значимый подразумевает, что это должно быть выполнено
явно. При этом, необходимо во-первых, сначала удостовериться, что тип упакованного объекта по ссылке соответствует исходному, а во-вторых, скопировать поля данных упакованного объекта в новую переменную данного типа. Как правило, проверку соответствия типов осуществляют с помощью механизма генерирования и обработки исключений, после чего копирование переносит внутренние данные (поля) объекта из «кучи» в стек выполняемого приложения, где хранятся его локальные переменные. Последовательность конкретных действий сводится к следующим шагам:
если служебный указатель на упакованный значимый тип имеет значение null, то генерируется исключение NullReferenceException,
если упакованный объект не соответствует требуемому типу, то выбрасывается исключение InvalidCastException.
Отмечается, что распаковка не является противоположностью упаковки в строгом смысле этого слова, она гораздо менее ресурсоёмка если состоит только в запросе указателя на исходный значимый тип.
Имя файла: Языки-программирования.pptx
Количество просмотров: 27
Количество скачиваний: 0