- •В.А. Новиков Объектно-ориентированное программирование в с#
- •Минск ● вгкс
- •Лабораторная работа 1 Константы, переменные, выражения. Визуальные элементы: кнопка и текстовое поле
- •Лабораторная работа 2 Операторы управления. Визуальные элементы: маскированное поле и установка цвета
- •Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
- •Лабораторная работа 4 Строки. Модальные формы пользователя
- •Лабораторная работа 5 Массивы. Зависимый переключатель
- •Лабораторная 6 Перечисление. Немодальные формы пользователя
- •Лабораторная 7 Регулярные выражения. Таймер
- •Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список
- •Лабораторная работа 9 Подпрограммы. Визуальный элемент список. Отработка событий клавиатуры
- •Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
- •Лабораторная работа 11 Переопределение операций. Закладка TabStrip
- •Лабораторная работа 12 Работа с файлами. Всплывающая подсказка
- •Лабораторная работа 13 Структуры. Перетаскивание элемента на форме
- •Лабораторная работа 14 Построение графиков через Excel. Объект Drawning
- •Содержание
Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
Цель работы.
Изучить формирование программ с использованием обработки исключительных ситуаций. Научиться создавать формы с использованием визуального элемента tabControl.
План занятия.
Изучить теоретические сведения формирования программы на С#.
По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.
Краткие теоретические сведения.
Обработка исключительных ситуаций.
Используется в двух случаях:
Если нужно перехватить стандартную исключительную ситуацию и:
а) сделать об этом сообщение своё на экран,
б) обработать эту ситуацию, чтобы программа не остановилась.
Если нужно в программе сгенерировать свою исключительную ситуацию по условию не предусмотренному стандартными исключительными ситуациями
Исключительная ситуация обрабатывается блоком try по следующему синтаксису:
try
{
блок для которого отрабатывается исключительная ситуация
}
catch (параметр)
{
действия по отработке ситуации параметр
}
….
catch {действия не указаные в остальных catch с параметрами}
Параметр зависит от того своя это ситуация или стандартная
Параметр для стандартной ситуации записывается в двух формах:
Тип
Тип переменная
Первый случай отрабатывает стандартную ситуацию.
Второй случай используется, если из типа стандартной ситуации нужно извлечь дополнительную ситуацию
Типы:
ArithmetException – ошибка в арифметических операциях
DivideByZerException – деление на ноль
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();
Порядок выполнения работы.
//FORM
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click_1(object sender, EventArgs e)
{
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
double x, y; string st;
x = Convert.ToDouble(textBox1.Text);
y = Math.Sin(x);
st = String.Format("{0,4:0.##}", y);
textBox2.Text = st;
}
private void button3_Click(object sender, EventArgs e)
{
double x, y; string st;
x = Convert.ToDouble(textBox3.Text);
y = Math.Cos(x);
st = String.Format("{0,4:0.##}", y);
textBox4.Text = st;
}
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
if (e.TabPageIndex == 0) toolStripStatusLabel1.Text = "Закладка номер один";
if (e.TabPageIndex == 1) toolStripStatusLabel1.Text = "Закладка номер два";
}
}}
Индивидуальное задание.
В практическом задании замените выражение, что бы была возможность деления на ноль. С использованием try обработайте эту исключительную ситуацию.
Содержание отчета.
Представить отлаженную программу по индивидуальному заданию.
Литература.
Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.89-95