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

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

{
    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();

    }
}

Код exception do_stuff_only_if_try_block_succeeded() выполняется только в том exceptions случае, если блок try выполняется c++ без создания исключения. Обратите control-flow внимание, что в случае, если cxx do_stuff_only_if_try_block_succeeded() вызывает исключение, это cxx исключение не будет перехвачено. Эти control-flow две концепции имитируют цель exceptions концепции python try ... catch ... else.

c++

exception

control-flow

2022-11-03T16:17:50+00:00