Boost.Asio の io_service::run() での例外の処理
Boost.Asio の io_service::run() メソッドは重要な役割を果たします非同期イベント処理で。ただし、エラーが発生した場合には、boost::system::system_error 例外も発生します。この例外をキャッチすることが賢明かどうかという疑問が生じます。
例外をキャッチする必要がありますか?
はい、io_service:: によってスローされた例外を処理することを強くお勧めします。走る()。ドキュメントに従って、完了ハンドラーからスローされた例外は伝播されます。これらを無視すると、プログラムが不正な動作をしたり終了したりする可能性があります。
例外の処理方法
ほとんどの場合、適切なアプローチは、io_service をループして実行し続けることです。エラーなしで終了します。次のコード スニペットは例を示しています。
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 } } }
リファレンス ドキュメント
詳細については、Boost.Asio ドキュメントを参照してください。場所:
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 中国語 Web サイトの他の関連記事を参照してください。