Mengendalikan Pengecualian dalam Boost.Asio's io_service::run()
Boost.Asio's io_service::run() kaedah memainkan peranan penting dalam pemprosesan acara tak segerak. Walau bagaimanapun, ia juga meningkatkan rangsangan::system::system_error exception apabila menghadapi ralat. Timbul persoalan sama ada dinasihatkan untuk menangkap pengecualian ini.
Adakah Anda Perlu Mengambil Pengecualian?
Ya, amat disyorkan untuk mengendalikan pengecualian yang dilemparkan oleh io_service:: lari (). Mengikut dokumentasi, pengecualian yang dilemparkan daripada pengendali penyiapan disebarkan. Mengabaikan mereka boleh membawa kepada tingkah laku program yang salah atau penamatan.
Cara Mengendalikan Pengecualian
Dalam kebanyakan kes, pendekatan yang sesuai adalah untuk menggelung dan terus menjalankan io_service sehingga ia keluar tanpa kesilapan. Coretan kod berikut memberikan contoh:
static void asio_event_loop(boost::asio::io_service& svc, std::string name) { for (;;) { try { svc.run(); break; // Exited normally } catch (std::exception const &e) { // Log error and handle appropriately } catch (...) { // Handle unknown exceptions as well } } }
Dokumentasi Rujukan
Untuk butiran lanjut, rujuk dokumentasi Boost.Asio di:
http://www.boost.org/doc/libs/1_61_0/doc/html/boost_asio/reference/io_service.html#boost_asio.reference.io_service.effect_of_exceptions_thrown_from_handlers
Atas ialah kandungan terperinci Sekiranya Anda Menangkap Pengecualian yang Dilemparkan oleh io_service::run() Boost.Asio?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!