Re[7]: Исключения в C++
От: ononim  
Дата: 26.03.16 22:08
Оценка:
_>Нет проблем. Только кому это надо?

...проще надо быть
#define RETRY(ATTEMPTS) for(int try_attempt = 0; try_attempt <= ATTEMPTS; ++try_attempt) try {
#define CATCH(E) break; } catch(E) {
#define DONE }

int _tmain(int argc, _TCHAR* argv[])
{
    RETRY(3)
    {
        if (--argc) throw std::exception("world");
        printf("done\n");
    }
    CATCH(std::exception &e)
    {
        printf("hello %s\n", e.what());
    }
    DONE
    return 0;
}

или со строгим киданием исключения выше:

#define RETRY(ATTEMPTS) for(int try_attempt = 0, max_attempt = ATTEMPTS; ; ++try_attempt) try {
#define REPAIR(E); break; } catch(E) { if (try_attempt == max_attempt) throw;
#define DONE }

int _tmain(int argc, _TCHAR* argv[])
{
    RETRY(3)
    {
        if (--argc) throw std::exception("world");
        printf("done\n");
    }
    REPAIR(std::exception &e)
    {
        printf("hello %s\n", e.what());
    }
    DONE
    return 0;
}

но все равно это костыль имхо
Как много веселых ребят, и все делают велосипед...
Отредактировано 26.03.2016 22:47 ononim . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.