boost::asio::io_service::run() 是否應該拋出異常發現了嗎?
問題:
boost::asio::io_service::run() 可能會拋出boost::system::system_error 例外,如果執行過程中出現錯誤。考慮是否應該處理此異常很重要。
答案:
是的,應該處理該異常。
解釋:
根據 boost 文檔,完成處理程序拋出的異常是傳播。因此,應針對特定應用程式適當處理 run() 引發的異常。
在許多情況下,建議循環並重複 run() 直到它退出且沒有錯誤。這可以確保連續運行,除非發生不可恢復的錯誤。
處理程式碼範例:
處理循環中run() 拋出的異常的範例:
void asio_event_loop(boost::asio::io_service& svc, std::string name) { while (true) { try { svc.run(); break; } catch (std::exception const &e) { std::cout << "[eventloop] An unexpected error occurred running " << name << " task: " << e.what() << std::endl; } catch (...) { std::cout << "[eventloop] An unexpected error occurred running " << name << " task" << std::endl; } } }
文件連結:
有關更多信息,請參閱Boost文件: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
以上是你應該捕捉 boost::asio::io_service::run() 拋出的例外嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!