cout.exceptions (Как пользоваться?)

Модератор: Модераторы разделов

Аватара пользователя
brazhe
Сообщения: 89

cout.exceptions

Сообщение brazhe »

Пробую писать на плюсах, хочу сделать прерывание цикла при невозможности записи в стандартный вывод, вот такой код работает как ожидается:

Код: Выделить всё

res = fprintf(stdout,"%f\n",sl.mean());
if (res < 0){
            cerr << "Can't write to stdout! \n";
            break;
}


А такой --- нет :(

Код: Выделить всё

try{
            cout << sl.mean() << endl;
}
catch (ostream::failure e){
            cerr << "Can't write to cout any more, exiting...\n";
            break;
}

Как сделать с использованием iostream то же, что и в первом куске кода?
Спасибо.
Спасибо сказали:
Аватара пользователя
Mitja_R
Сообщения: 56

Re: cout.exceptions

Сообщение Mitja_R »

brazhe писал(а):
19.10.2005 17:08
А такой --- нет :(

А что значит "не как ожидается? В чем ошибка?
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89

Re: cout.exceptions

Сообщение brazhe »

Mitja_R писал(а):
19.10.2005 17:28
А что значит "не как ожидается? В чем ошибка?

Ошибка в том, что цикл не прерывает и exception не ловит.

Вообще-то, может, мне и с другого конца надо было зайти :) Суть задачи такова:
прога1 --- генерит данные (модель там, то да сё)
прога2 --- читает вывод от проги1 и делает всякое. По достижении полного счастья, она завершается. Если пускать "прога1 | прога 2" просто из командной строки, то прога1 завершается по завершении проги2 без вопросов. Если я все это дело пускаю из скрипта на питоне (с разыми параметрами модели) командой типа "os.sys('прога1 | прога2')" то прога1 продолжает работать даже после завершения проги2. Если вставлять прерывание цикла при невозможности записи в stdout, то работает как надо. Но не вариантом с exceptions.
Спасибо сказали: