Il gestore di catch non viene eseguito. Ma perché?Perché il blocco catch di questo codice non viene eseguito?
Seviene avviato prima del blocco try
, viene eseguito il gestore catch.
Se il tipo di blocco catch non corrisponde al tipo generato, il programma termina spiegando che il thread termina con un'eccezione non rilevata, suggerendo che l'eccezione viene gestita, tuttavia il blocco catch non viene eseguito.
#include <iostream>
#include <thread>
using namespace std;
void do_work() {}
int main() {
std::cerr << "RUNNING" << std::endl;
try {
thread t(do_work);
std::cerr << "THROWING" << std::endl;
throw logic_error("something went wrong");
} catch (logic_error e) {
std::cerr << "GOTCHA" << std::endl;
}
return 0;
}
comando Compila:
c++ -std=c++14 -pthread -pedantic -Wall -Wextra -O0 scratch.cpp -o scratch
Si prega di indentare il codice prima di premere il pulsante di invio – bhavesh
Perché sulla terra questo ha un downvote? \ * scratches head \ * –
@LightnessRacesinOrbit Qualcuno probabilmente ha downvoted indietro quando il codice ha interrotto la formattazione. – user2079303