….
Блок для которого отрабатывается исключительная ситуация
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