Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodicheskoe_posobie_VGKS_po_S.docx
Скачиваний:
49
Добавлен:
13.02.2016
Размер:
433.75 Кб
Скачать

Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl

Цель работы.

Изучить формирование программ с использованием обработки исключительных ситуаций. Научиться создавать формы с использованием визуального элемента tabControl.

План занятия.

Изучить теоретические сведения формирования программы на С#.

По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.

Краткие теоретические сведения.

Обработка исключительных ситуаций.

Используется в двух случаях:

  1. Если нужно перехватить стандартную исключительную ситуацию и:

а) сделать об этом сообщение своё на экран,

б) обработать эту ситуацию, чтобы программа не остановилась.

  1. Если нужно в программе сгенерировать свою исключительную ситуацию по условию не предусмотренному стандартными исключительными ситуациями

Исключительная ситуация обрабатывается блоком 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]