На этом шаге мы рассмотрим пример обработки исключительных ситуаций в приложениях Windows Forms.
Проиллюстрируем использование обработчиков исключений при создании приложений Windows Forms. Зададим такой алгоритм: возьмем массив целых чисел, датчик случайных чисел в интервале [1, 10] и организуем деление каждого элемента массива на полученное случайное число следующим образом: 1-й элемент массива делим на 1-е случайное число, 2-й - на 2-е и т. д. Для простоты мы взяли массив из 3-х элементов. Поместим в форму две кнопки, одна из которых будет запускать на выполнение наш алгоритм, а другая обеспечит выход из приложения. Текст обработчиков событий этих кнопок приведен ниже, а результат расчетов - на рисунках 1 и 2.
Рис.1. Форма приложения в режиме проектирования
// Обработка нажатия кнопки "Выход" private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { Close(); } // Обработка нажатия кнопки "Пуск" private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { array <int^> ^m = gcnew array <int^> (3) {1, 2, 3}; int k = 0; // Подсчет итераций цикла while int j1; try { while(k < 10000) { for(int i = 0; i < m->Length; i++) { //формирование обращения //к датчику случайных чисел Random^ r = gcnew Random(); //выдает случайное число в интервале [0,10] int j = r->Next(0,10); int j1 = (int)m[i] / j; } //for k++; } //while MessageBox::Show("Конец цикла"); } //try catch (ArithmeticException^ e) //задаем тип исключений, //которые будут обрабатываться { textBox1->Text = "Системное сообщение: " + e->Message + " Шаг цикла = " + Convert::ToString(k); } //catch }
Рис.2. Результат работы приложения
Основные пояснения сделаны в тексте программы. А сейчас обратим внимание на то, что среда CLR - среда специфическая и работает со своими типами данных (с объектами), а не с теми, к которым мы привыкли (int, float, char и т. п.). Одними из объектов являются managed-массивы (array-типы) и их элементы (смотри 79 шаг). Объекты имеют метод ToString(), переводящий объект в строку символов. Числовому объекту легко присвоить просто обычное число, а объект уже можно перевести в строку и потом вывести эту строку.
На следующем шаге мы рассмотрим функции, выдающие исключения.