594 _________Часть IV. Новые возможности C++
{
cout « "Внутри DoSomethingElse.\n";
}
void DoSomethingUseful(int Flag) {
cout « "Внутри DoSomethingUseful.\n";
// Переменная Flag слишком мала или слишком велика? if (Flag < MIN_FLAG_VALUE I¦ Flag > MAX_FLAG_VALUE) throw FLAG_OUT_OF_BOUNDS;
// Некая деятельность try {
if (Flag == 0) {
cout « "Флаг установлен в 0.\п";
DoSomethingElse () ;
} else
throw "Флаг не равен нулю.";
}
catch (char *ErrorString) { cout « ErrorString « "\n";
} }
void main(int argc, char *argv[ ]) (
// Если параметры командной строки отсутствуют,
//то установить флаг в ноль
int UseFiag = (argc == 1 ? О : atoi(argv[l])) ;
// Произвести какую-то работу try {
DoSomethingUseful(UseFiag) ;
} catch (int ErrorCode) {
cout « "Перехвачена исключительная ситуация (" « ErrorCode « ").\n";
} }
Этот пример выглядит обманчиво простым, но в нем есть несколько интересных моментов. В табл. 22.1 показано, что программа из листинга 22.11 выведет на экран в зависимости от аргумента, переданного ей в командной строке.
Аргумент командной строки |
На выходе |
Аргументов нет |
Внутри DoSomethingUseful Флаг установлен в 0 Внутри DoSomethingElse |