Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Обработка исключений в Си-шарп. Оператор try-catch



Для обработки исключений в Си-шарп используется оператор try-catch. Он имеет следующую структуру:

try
{
//блок кода, в котором возможно исключение
}
catch ([тип исключения] [имя])
{
//блок кода – обработка исключения
}


Типы исключений
Exception – базовый тип всех исключений. Блок catch, в котором указан тип Exception будет «ловить» все исключения.
FormatException – некорректный формат операнда или аргумента (при передаче в метод).
NullReferenceException - В экземпляре объекта не задана ссылка на объект, объект не создан
IndexOutOfRangeException – индекс вне рамок коллекции
FileNotFoundException – файл не найден.
DivideByZeroException – деление на ноль

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

try
{
//блок1
}
catch (Exception)
{
//обработка исключения
}
finally
{
//блок кода, который выполнится обязательно
}


Выполнение кода программы в блоке finally происходит в последнюю очередь
. Работа с файлами в Си-шарп. Классы StreamReader и StreamWriter

Файл – это набор данных, который хранится на внешнем запоминающем устройстве (например на жестком диске). Файл имеет имя и расширение. Расширение позволяет идентифицировать, какие данные и в каком формате хранятся в файле.

Под работой с файлами подразумевается:
- cоздание файлов;
- удаление файлов;
- чтение данных;
- запись данных;
- изменение параметров файла (имя, расширение…);
- другое.

В Си-шарп есть пространство имен System.IO, в котором реализованы все необходимые классы для работы с файлами. Чтобы подключить это пространство имен, необходимо в самом начале программы добавить строку using System.IO. Для использования кодировок еще добавим пространство using System.Text;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


Как создать файл?
Для создания пустого файла, в классе File есть метод Create(). Он принимает один аргумент – путь.

пример создания пустого текстового файла new_file.txt на диске D:

static void Main(string[] args)
{
File.Create("D:\\new_file.txt");
}


Если файл с таким именем уже существует, он будет переписан на новый пустой файл.

Метод WriteAllText() создает новый файл (если такого нет), либо открывает существующий и записывает текст, заменяя всё, что было в файле:

Метод AppendAllText() работает, как и метод WriteAllText() за исключением того, что новый текст дописывается в конец файла, а не переписывает всё что было в файле

Метод Delete() удаляет файл по указаному пути

 

Чтобы читать/записывать данные в файл с Си-шарп можно использовать потоки.
Поток – это абстрактное представление данных (в байтах), которое облегчает работу с ними. В качестве источника данных может быть файл, устройство ввода-вывода, принтер.

Класс Stream является абстрактным базовым классом для всех потоковых классов в Си-шарп. Для работы с файлами нам понадобится класс FileStream(файловый поток).


Режимы открытия FileMode:
- Append – открывает файл (если существует) и переводит указатель в конец файла (данные будут дописываться в конец), или создает новый файл. Данный режим возможен только при режиме доступа FileAccess.Write.
- Create - создает новый файл(если существует – заменяет)
- CreateNew – создает новый файл (если существует – генерируется исключение)
- Open - открывает файл (если не существует – генерируется исключение)
- OpenOrCreate – открывает файл, либо создает новый, если его не существует
- Truncate – открывает файл, но все данные внутри файла затирает (если файла не существует – генерируется исключение)

 

Режим доступа FileAccess:
- Read – открытие файла только на чтение. При попытке записи генерируется исключение
- Write - открытие файла только на запись. При попытке чтения генерируется исключение
- ReadWrite - открытие файла на чтение и запись.

Чтение из файла
Для чтения данных из потока нам понадобится класс StreamReader. (методы для удобного считывания данных).
Метод ReadToEnd() считывает все данные из файла. ReadLine() – считывает одну строку (указатель потока при этом переходит на новую строку, и при следующем вызове метода будет считана следующая строка).
Свойство EndOfStream указывает, находится ли текущая позиция в потоке в конце потока (достигнут ли конец файла). Возвращает true или false.

Запись в файл Для записи данных в поток используется класс StreamWriter.

Метод WriteLine() записывает в файл построчно (то же самое, что и простая запись с помощью Write(), только в конце добавляется новая строка).
Нужно всегда помнить, что после работы с потоком, его нужно закрыть (освободить ресурсы), использовав метод Close().

 


Как создать папку? С помощью статического метода CreateDirectory() класса Directory:

static void Main(string[] args)
{
Directory.CreateDirectory("d:\\new_folder");
}


Для удаления папок используется метод Delete():

 

Понятие объектно-ориентированное программирование (ООП).  ООП позволяет объединить данные и методы, относящиеся к одной сущности, и работать с ними, как с одним целым.

Классы и объекты. В чем разница?
ООП привносит нам два ключевых понятия: Класс и Объект. Класс – это абстрактный тип данных. С помощью класса описывается некоторая сущность (ее характеристики и возможные действия). Например, класс может описывать студента, автомобиль и т.д. Описав класс, мы можем создать его экземпляр – объект. Объект – это уже конкретный представитель класса.


Основные принципы объектно-ориентированного программирования
Инкапсуляция – позволяет скрывать внутреннюю реализацию. В классе могут быть реализованы внутренние вспомогательные методы, поля, к которым доступ для пользователя необходимо запретить, тут и используется инкапсуляция.
Наследования – позволяет создавать новый класс на базе другого. Класс, на базе которого создается новый класс, называется базовым, а базирующийся новый класс – наследником. Например, есть базовый класс животное. В нем описаны общие характеристики для всех животных (класс животного, вес). На базе этого класса можно создать классы наследники Собака, Слон со своими специфическими свойствами. Все свойства и методы базового класса при наследовании переходят в класс наследник.
Полиморфизм – это способность объектов с одним интерфейсом иметь различную реализацию. Например, есть два класса, Круг и Квадрат. У обоих классов есть метод GetSquare(), который считает и возвращает площадь. Но площадь круга и квадрата вычисляется по-разному, соответственно, реализация одного и того же метода различная.
Абстракция – позволяет выделять из некоторой сущности только необходимые характеристики и методы, которые в полной мере (для поставленной задачи) описывают объект. Например, создавая класс для описания студента, мы выделяем только необходимые его характеристики, такие как ФИО, номер зачетной книжки, группа. Здесь нет смысла добавлять поле вес или имя его кота/собаки и т.д.

 


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 360; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь