Пространства имён
Варианты
Действия

std::uncaught_exception

Материал из cppreference.com
< cpp‎ | error

 
 
 
Обработка ошибок
Обработка исключений
Оригинал:
Exception handling
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
exception
uncaught_exception
exception_ptr(C++11)
make_exception_ptr(C++11)
current_exception(C++11)
rethrow_exception(C++11)
nested_exception(C++11)
throw_with_nested(C++11)
rethrow_if_nested(C++11)
Неудачи обработки исключений
Оригинал:
Exception handling failures
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
terminate
terminate_handler
get_terminate(C++11)
set_terminate
unexpected(устарело)
bad_exception
unexpected_handler(устарело)
get_unexpected(C++11)(устарело)
set_unexpected(устарело)
Исключение категорий
Оригинал:
Exception categories
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
logic_error
invalid_argument
domain_error
length_error
out_of_range
runtime_error
range_error
overflow_error
underflow_error
Коды ошибок
Оригинал:
Error codes
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Коды ошибок
errno
Утверждений
Оригинал:
Assertions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
assert
system_error центр
Оригинал:
system_error facility
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
error_category(C++11)
generic_category(C++11)
system_category(C++11)
error_condition(C++11)
errc(C++11)
error_code(C++11)
system_error(C++11)
 
Определено в заголовочном файле <exception>
bool uncaught_exception();
Обнаруживает, если текущий поток имеет живой объект исключения, то есть исключение было брошено и еще не вступил в соответствующий пункт улова, std::terminate или std::unexpected. Иными словами, std::uncaught_exception обнаруживает, если стек разматывания В настоящее время ведется.
Оригинал:
Detects if the current thread has a live exception object, that is, an exception has been thrown and not yet entered a matching catch clause, std::terminate or std::unexpected. In other words, std::uncaught_exception detects if stack unwinding is currently in progress.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Иногда это безопасно исключение даже во время std::uncaught_exception() == true. Например, если исключения перехватываются и игнорируется в деструкторе, они не могут распространяться из него и не приведет к std::terminate.
Оригинал:
Sometimes it's safe to throw an exception even while std::uncaught_exception() == true. For example, if exceptions are caught and ignored in a destructor, they can't propagate out of it and won't lead to std::terminate.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Параметры

(Нет)

[править] Возвращаемое значение

true, если раскручивание стека в настоящее время прогресс в этой теме.
Оригинал:
true if stack unwinding is currently in progress in this thread.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Исключения

noexcept-спецификация:  
noexcept
  (начиная с C++11)

[править] Пример

#include <iostream>
#include <exception>
#include <stdexcept>
 
struct Foo {
    ~Foo() {
        if (std::uncaught_exception()) {
            std::cout << "~Foo() called during stack unwinding\n";
        } else {
            std::cout << "~Foo() called normally\n";
        }
    }
};
int main()
{
    Foo f;
    try {
        Foo f;
        std::cout << "Exception thrown\n";
        throw std::runtime_error("test exception");
    } catch (const std::exception& e) {
        std::cout << "Exception caught: " << e.what() << '\n';
    }
}

Вывод:

Exception thrown
~Foo() called during stack unwinding
Exception caught: test exception
~Foo() called normally

[править] См. также

Функция вызывается при обработке исключений не удается
Оригинал:
function called when exception handling fails
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
общий тип указателя для обработки исключения объектов
Оригинал:
shared pointer type for handling exception objects
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(определение типа) [edit]

[править] Внешние ссылки

GOTW issue 47: Uncaught Exceptions