Оператор 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
Оператор C++ Else в обработке исключений
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.