Исключения. Работа с файлами

Содержание

Слайд 2

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

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

Слайд 3

Типы возможных аномалий

Типы возможных аномалий

Слайд 4

Генерация общего исключения

Вспомним индексатор в классе Vector

Генерация общего исключения Вспомним индексатор в классе Vector

Слайд 5

Перехват исключений

Оператор try указывает блок кода, предназначенный для обработки ошибок или

Перехват исключений Оператор try указывает блок кода, предназначенный для обработки ошибок или
очистки.
Блок catch имеет доступ к объекту Exception, который содержит информацию об ошибке. Блок catch применяется либо для компенсации последствий ошибки, либо для повторной генерации исключения.

Слайд 6

Exception
class

SystemException
class
⇒Exception

ApplicationException
class
⇒Exception

Object
class

ArgumentException
class
⇒ SystemException

ArithmeticException
class
⇒ SystemException

IOException
class
⇒ SystemException

FileLoadException
class
⇒ IOException

FileNotFoundException
class
⇒ IOException

EndOfStreamException
class
⇒ IOException

DirectoryNotFoundException
class
⇒ IOException

OverFlowException
class
⇒ SystemException

ArgumentOutOfRangeException
class
⇒ ArgumentException

ArgumentNullException
class
⇒ ArgumentException

StackOverFlowException
class
⇒ SystemException

UnauthorizedAccessException
class

Exception class SystemException class ⇒Exception ApplicationException class ⇒Exception Object class ArgumentException class
SystemException

Слайд 7

Пользовательские исключения.

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

Пользовательские исключения. Если не устраивают встроенные исключения можно создать свой тип исключений.
хотим ограничить модуль векторов: 0>V.Length>=10

Слайд 8

Генерация и перехват исключения

Генерация и перехват исключения

Слайд 9

Во многих случаях роль специального исключения состоит не в предоставлении дополнительной функциональности

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

Слайд 10

Обработка многочисленных исключений

Обработка многочисленных исключений

Слайд 13

Общие операторы catch

Общие операторы catch

Слайд 14

Фильтры исключений (C# 6)

Если генерируется исключение VectorIsOutOfRangeException, тогда вычисляется булевское выражение, находящееся

Фильтры исключений (C# 6) Если генерируется исключение VectorIsOutOfRangeException, тогда вычисляется булевское выражение,
после ключевого слова when. Если результатом оказывается false, то данный блок catch игнорируется и просматриваются любые последующие конструкции catch.

Слайд 15

Передача исключений

Исключение можно перехватывать и генерировать повторно

Передача исключений Исключение можно перехватывать и генерировать повторно

Слайд 16

Блок finally

Блок finally выполняется всегда — независимо от того, возникало ли исключение,

Блок finally Блок finally выполняется всегда — независимо от того, возникало ли
и полностью ли был выполнен блок try. Блоки finally обычно используются для размещения кода очистки

Слайд 17

Операции с файлами и каталогами

Операции с файлами и каталогами

Слайд 18

Замечание!

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

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

Слайд 19

System.IO

Пространство имен System.IO предоставляет набор типов для разнообразной работы с файлами и

System.IO Пространство имен System.IO предоставляет набор типов для разнообразной работы с файлами
папками.
Для большинства средств можно выбирать из двух классов: один предлагает статические методы, а другой — методы экземпляра.
Статические классы
File
Directory
Классы с методами экземпляра (сконструированного с указанием имени файла или каталога)
Filelnfo
Directorylnfo
Вдобавок имеется статический класс по имени Path. Он ничего не делает с файлами или каталогами, а предоставляет методы строкового манипулирования для имен файлов и путей к каталогам. Класс Path также помогает при работе с временными файлами.

Слайд 21

Пример работы с классом DirectoryInfo

Пример работы с классом DirectoryInfo

Слайд 22

Метод GetFiles()

Метод GetFiles()

Слайд 23

Метод CreateSubdirectory()

Метод CreateSubdirectory()

Слайд 24

Пример работы с классом Directory

Пример работы с классом Directory

Слайд 25

Работа с классом FileInfo

Работа с классом FileInfo

Слайд 26

Работа с типом File

File — это статический класс, все методы которого

Работа с типом File File — это статический класс, все методы которого
принимают имя файла. Имя файла может или указываться относительно текущего каталога, или быть полностью определенным, включая каталог. На слайде перечислены некоторые методы класса File (все они являются public и static)

Слайд 27

Несколько слов об обобщенных коллекциях

Несколько слов об обобщенных коллекциях

Слайд 28

О чем эта часть.

В .NET доступно много обобщенных коллекций и со временем

О чем эта часть. В .NET доступно много обобщенных коллекций и со
их количество растет. В данной части презентации приведены наиболее важные интерфейсы и классы обобщенных коллекций, о существовании которых необходимо знать. И которые вы будете использоватью В пространствах имен System.Collections, System.Collections.Specialized и System.ComponentModel определены дополнительные необобщенные коллекции, но здесь они не рассматриваются.

Слайд 29

Интерфейсы

Почти все интерфейсы, которые нужно знать, находятся в пространстве имен System.Collections.Generic. Справа

Интерфейсы Почти все интерфейсы, которые нужно знать, находятся в пространстве имен System.Collections.Generic.
показано, как были связаны основные интерфейсы до выхода версии .NET 4.5; здесь также присутствует необобщенный IEnumerable в качестве корневого интерфейса. Чтобы излишне не усложнять диаграмму, в нее не были включены интерфейсы, предназначенные только для чтения, которые появились в версии .NET 4.5.
Наиболее фундаментальным интерфейсом обобщенной коллекции является IEnumerable, представляющий последовательность элементов, по которой можно осуществлять проход. Интерфейс IEnumerable позволяет запрашивать итератор типа IEnumerator.
Отделение поддерживающей проход последовательности от итератора делает возможным выполнение множества итераторов независимым образом на одной и той же последовательности одновременно. Если вы хотите думать терминами баз данных, то IEnumerable является таблицей, a IEnumerator — курсором.

Слайд 30

Интерфейсы обобщенных коллекций

Интерфейсы обобщенных коллекций

Слайд 31

Класс List

Класс List

Слайд 32

Структура KeyValuePair

В пространстве имен System.Collections.Generic определена структура KeyValuePair Она служит

Структура KeyValuePair В пространстве имен System.Collections.Generic определена структура KeyValuePair Она служит для
для хранения ключа и его значения и применяется в классах обобщенных коллекций, в которых хранятся пары "ключ-значение", как, например, в классе Dictionary. В этой структуре определяются два следующих свойства.
public TKey Key { get; }
public TValue Value { get; }
В этих свойствах хранятся ключ и значение соответствующего элемента коллекции. Для построения объекта типа KeyValuePair служит конструктор:
public KeyValuePair(TKey key, TValue value)
где key обозначает ключ, a value — значение.

Слайд 33

Класс Dictionary

Обобщенный класс Dictionary — одна из наиболее часто применяемых

Класс Dictionary Обобщенный класс Dictionary — одна из наиболее часто применяемых коллекций.
коллекций. Позволяет хранить пары "ключ-значение" в коллекции как в словаре. Значения доступны в словаре по соответствующим ключам.
Для хранения ключей и значений он использует структуру данных в форме хеш-таблицы, а также характеризуется высокой скоростью работы и эффективностью.

Слайд 34

Класс Stack

Класс Stack является обобщенным эквивалентом класса необобщенной коллекции Stack. В

Класс Stack Класс Stack является обобщенным эквивалентом класса необобщенной коллекции Stack. В
нем поддерживается стек в виде списка, действующего по принципу "первым пришел — последним обслужен".

Слайд 35

Класс Queue

В классе Queue<Т> поддерживается очередь в виде списка, действующего по принципу

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

Слайд 36

Домашнее задание. Часть 1.

Создать класс Matrix, описывающий квадратную матрицу 2x2.
Добавить вычисляемое

Домашнее задание. Часть 1. Создать класс Matrix, описывающий квадратную матрицу 2x2. Добавить
свойство – определитель.
Реализовать двумерный индексатор.
Реализовать метод нахождения обратной матрицы.
Переопределить ToString().
Переопределить в классе операции «+, ++, -, --, *, /, <, > (по определителю), ==, !=».
Написать функции Parse (берет строку надлежащего формата и переводит ее в матрицу, если формат неверный, выбрасывает исключение) и TryParse (берет строку надлежащего формата и и пытается перевести ее в матрицу, если формат неверный, то возвращает false, в out параметр записывает null, если формат верный возвращает true, в out параметр записывает считанную матрицу). Правило записи матрицы в строку определите сами, хорошо бы она соотносилась с ToString().
Сигнатура Parse: Matrix Parse(string str);
Сигнатура TryParse: bool TryParse(string str, out Matrix matr);
Имя файла: Исключения.-Работа-с-файлами.pptx
Количество просмотров: 24
Количество скачиваний: 0