Мне интересно, почему исключения внутри соединения inceed insoke std :: verminate и отдельные потоки не вызывают std :: urlinate .
Рассмотрим, как следить за фрагментом, который запускает std :: verminate . Если мы заменим t2.join () на t2.detach () программа выйдет с 0.
#include
#include
void foo(bool throws) {
if (throws) {
throw std::runtime_error("Asked to throw");
}
}
int main() {
try {
std::thread t1(foo, false);
std::thread t2(foo, true);
t1.join();
t2.join();
}
catch (std::exception const &e) {
std::println("Failed with exception: {}", e.what());
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ned-thread
Std :: verminate называется из -за неучительного исключения внутри соединенного потока ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Std :: verminate называется из -за неучительного исключения внутри соединенного потока
Anonymous » » в форуме C++ - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Std :: verminate называется из -за неучительного исключения внутри соединенного потока
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему обработчик std :: verminate не называется, если исключения отключены?
Anonymous » » в форуме C++ - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему обработчик std :: verminate не называется, если исключения отключены?
Anonymous » » в форуме C++ - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-