Чтение из текстового файла

….

Блок для которого отрабатывается исключительная ситуация

Try

{

}

catch (параметр)

{

действия по отработке ситуации параметр

}

catch {действия не указаные в остальных catch с параметрами} // этого может и не быть)

Параметр зависит от того своя это ситуация или стандартная

Параметр для стандартной ситуации записывается в двух формах:

Тип

Тип переменная

Первый случай отрабатывает стандартную ситуацию.

Второй случай используется, если из типа стандартной ситуации нужно извлечь дополнительную ситуацию

Типы: (стр. 90)

ArithmetException – ошибка в арифметических операциях

DivideByZerException – деление на ноль

(см. далее стр. 90)

Стр. 258 (для файлов)

FileNotFoundException – неверное имя файла

(задание: для файлов найти все другие случаи исключения!)

Пример параметра с указанием только типа:

catch(DivideByZeroException)

{Console.Write(“произошло деление на ноль”);}

Если указывается парам в виде типпеременная, то в обработчике catch можно извлечь дополнительную информацию, заложенную в классе Exception. Все стандартные типы принадлежат этому классу. Предполож, что задано:

catch(FormatException e)

{Console.Write(“Неверный тип данного”);

Console.Write(e.Message); // уточняется информации из свойства Message

}

Свойства класса Exception:

Message – текстовое описание ошибки,

HelpLink – URL файла справки об ошибке,

Source – имя объекта или приложения, которое содержит ошибку,

StackTrace – последовательность вызовов, которые привели к ошибке,

InnerException – ссылка на исключение, послужившее причиной текущего исключения,

TargetSite – метод, выбросивший исключение.

Обработка нестандартной ситуации

Предположим, что в программе необходимо, чтобы переменная х находилась в пределах от 1 до 10. В этом случае необходимо эту ситуацию в нужном месте try программы отследить в виде:

if((x<1)||(x>10))

throw new Exception(“x за пределами диапазона”)

Для этого примера оператор catch должен выглядеть следующим образом:

catch(Exception e)

{Console.Write(e.Message);}// будет выведено сообщение, определенное в

// throw выше

Кроме указанной ситуации throw можно ссылаться и на стандартный тип, если это подходит по смыслу:

throw new IndexOutOrRangeException();

Переопределение операций

Используется для нестандартного действия в операциях

Например: мы хотим для переменных x и y определить сумму не как x+y, а в виде 5x+4y или что то в этом роде.

Можно переопределять только те операции, которые зарезервированы стандартно.

Переопределение у парных операции

+ -! ++ -- true false

Переопределение выполняется в виде процедуры стандартного типа:

public static double operator ++ (double x)

{ double temp = x+2; return temp;

} тип результата аргумент операции

Пример программы:

double x; x=1; x++; // x будет ровно 3

Переопределение бинарных операций

+ - * / % && || ^ << >> ==!= > < > = < =

Нет операции =

Пример:

public static double operator + (double x, double y)

{double temp=5*x+4*y;

return temp

}

Программа:

double x=1,y=2;

double z=x+y;

z будет ровно 5x+4y=13

Переопределения преобразования типов

Стр.168

Возможно только для своих классов, так как для всех стандартных типов и классов эти операции уже определены. По этому это рассмотрим после изучения классов.

Работа с файлами

Текстовые файлы

В них информация хранится в виде обычного текста.

Запись в текстовый файл.

1. Открыть файл на запись.

StreamWriter f = new StreamWriter(a.txt,false,Encoding.GetEncoding(1251));

переменная типа файла физический файл

2. Запись в файл методами Write или Writeline

f.Writeline(“a={0} b={1},a,b);

указатель при этом устанавливается на начало следующей строки

3. Закрыть файл

f.close();

1)открыть файл на чтение

StreamReader f=new StreamReader(“a.txt”,Encoding.GetEncoding(1251));

2) выполнить операции чтения

String S;

S= f.ReadLine(); - чтение очередной строки

Указатель при этом уст. на начало очередной строки

S= f.ReadToEnd(); - считать с текущей позиции весь текст до конца файла

S=f.ReadBlock(10); -считать с текущей позиции 10 символов, указатель уст. на новое место

S.= f.Peek(); -считать символ на указателе, указать при этом остается на том же месте

3) закрыть файл

f.Close();

Пример стр.259


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: