Trình xử lý bắt không được chạy. Nhưng tại sao?Tại sao khối mã catch này không thực thi?
Nếu thread t
được bắt đầu trước khối try
, trình xử lý bắt sẽ chạy.
Nếu loại khối catch không khớp với loại được ném, chương trình thoát giải thích rằng luồng được kết thúc với một ngoại lệ chưa bắt buộc, cho thấy rằng ngoại lệ được xử lý, nhưng khối catch không chạy.
#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;
}
Compile lệnh:
c++ -std=c++14 -pthread -pedantic -Wall -Wextra -O0 scratch.cpp -o scratch
vui lòng thụt lề mã của bạn trước khi nhấn nút gửi – bhavesh
Tại sao điều này lại có một lưu ý? \ * scratches head \ * –
@LightnessRacesinOrbit Một người nào đó có thể đã downvoted lại khi mã đã bị hỏng định dạng. – user2079303