C ++ Else оператор в обработке исключений

Я хотел бы знать, если есть еще заявление, как в Python, что при подключении к попробуй поймать структура, делает блок кода внутри него только исполняемым, если не было сгенерировано / перехвачено исключений.

Например:

try {
//code here
} catch(...) {
//exception handling here
} ELSE {
//this should execute only if no exceptions occurred
}

4

Решение

Концепция else для try Блок не существует в C ++. Его можно эмулировать с использованием флага:

{
bool exception_caught = true;
try
{
// Try block, without the else code:
do_stuff_that_might_throw_an_exception();
exception_caught = false; // This needs to be the last statement in the try block
}
catch (Exception& a)
{
// Handle the exception or rethrow, but do not touch exception_caught.
}
// Other catches elided.

if (! exception_caught)
{
// The equivalent of the python else block goes here.
do_stuff_only_if_try_block_succeeded();

}
}

do_stuff_only_if_try_block_succeeded() код выполняется только в том случае, если блок try выполняется без исключения. Обратите внимание, что в случае, если do_stuff_only_if_try_block_succeeded() выдает исключение, это исключение не будет поймано. Эти две концепции имитируют намерение питона try ... catch ... else концепция.

1

Другие решения

Почему бы просто не поставить его в конце блока try?

6

По вопросам рекламы [email protected]