|
Программирование >> Элементы языков с и с++
) switch ) for к++; } while return; см. пояснение после листинга throw 1; } try catch (ArithmeticException e} задаем тип исключений, которые будут обрабатываться kl[0]=k; для легкого преобразования int в String this->textBoxl->Text= CHCTeMHoe сообщение: + e->Message + Шаг цикла= + Convert::ToString(kl[0]}; } catch ) Buttonl click private: System::Void button2 Click(System::Object sender. System: :EventArgs e) this->Close(); ) Пояснение-Основные пояснения сделаны в тексте программы. А сейчас обратим внимание на два момента: П как формировать try-блок, где находится оператор throw, который выдает исключение; □ как избежать неприятностей преобразования числовых типов данных в строку при работе в режиме CLR, в котором мы создали приложение. Что касается первого вопроса, то тут надо иметь в виду следующее: оператор throw кое-куда ставить нельзя, ибо он выбрасывает системе исключение не Функции, выдающие исключения в соответствии с моделью создания и обработки исключительных ситуаций, принятой в данной версии С++, компилятор предполагает, что исключения могут выдаваться только от выполнения оператора throw или от вызова функции. Функция будет выдавать исключения, если ее заголовок дополнен одной из следующих спецификаций: П throw () - функция выдает пустое исключение (т. е. не выдает никакого исключения); П throw (...) - функция выдает любое исключение, которое возникнет при ее вызове; П throw (type) - функция выдает исключение заданного типа. В листинге 13.4 приводится функция fi(), выдающая исключение, когда ее аргумент четное число. Результат работы представлен на рис. 13.5. ;тинг13.4 2008-Func-Excep native.cpp : Defines the entry point for the console application. только когда наступает действительная причина его возникновения, но и тогда, когда он сам выполнится. В обычном режиме работы программы этот оператор не должен попадаться для исполнения по ходу выполнения вашей программы, иначе он сам прервет выполнение программы системным образом (на catch ваша программа в этом случае не попадет и сработает системный вариант). Поэтому try-блок надо формировать так, чтобы содержащийся в нем throw не выполнялся (тогда он сработает в момент появления в вашей программе исключительной ситуации и управление будет передано на соответствующий try-блоку оператор catch). Что касается второго вопроса, то здесь правило такое: среда CLR - среда специфическая и работает со своими типами данных (с объектами), а не с теми, к которым мы привыкли (int, float, char и т. п.). Одними из объектов являются managed-массивы (array-типы) и их элементы. Объекты имеют метод ToString о, переводящий объект в строку символов. Числовому объекту легко присвоить просто обычное число, а объект уже можно перевести в строку и потом вывести эту строку. C-.\WINDOWS\system32\cmd.exe я продолжения нажмите любую клавишу . Рис. 13.5. Функции, выдающие исключения #include stdafx.h . #include <stdlib.h> void fKint i) throw (int) { if(i%2 = 0) четное число (остаток от деления равен 0) throw 1; void f2(int j) throw (...) { fl(j); } . ,1------------------------------ int tmain() { for(int j=0; j < 10; j++) try f2(j); ) catch (...) { . printf( j=%d\n ,j); ) for . * } -
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |