Шаг 209.
Microsoft Visual C++ 2010. Язык С/С++.
Управление исключительными ситуациями. Пример 3

    На этом шаге мы рассмотрим пример обработки исключительных ситуаций в приложениях 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(), переводящий объект в строку символов. Числовому объекту легко присвоить просто обычное число, а объект уже можно перевести в строку и потом вывести эту строку.

    На следующем шаге мы рассмотрим функции, выдающие исключения.




Предыдущий шаг Содержание Следующий шаг