boost::asio::io_service::run()에서 예외 잡기
boost::asio에서 run() 메서드 io_service 클래스 중 하나는 오류가 발생할 경우 Boost::system::system_error 예외를 발생시킬 수 있습니다. 애플리케이션이 제대로 작동하려면 이 예외를 처리할지 여부를 결정하는 것이 중요합니다.
예외 처리의 정당성
문서에는 완료 핸들러에서 발생한 예외가 전파된다고 명시되어 있습니다. . 따라서 run()에서 발생한 예외를 애플리케이션에 맞게 적절하게 처리하는 것이 좋습니다.
권장 접근 방식
일반적인 접근 방식은 run()을 반복적으로 호출하는 것입니다. 오류 없이 종료될 때까지. 다음 코드 샘플은 이 접근 방식을 보여줍니다.
static void m_asio_event_loop(boost::asio::io_service& svc, std::string name) { for (;;) { try { svc.run(); break; // exited normally } catch (std::exception const &e) { logger.log(LOG_ERR) << "[eventloop] An unexpected error occurred running " << name << " task: " << e.what(); } catch (...) { logger.log(LOG_ERR) << "[eventloop] An unexpected error occurred running " << name << " task"; } } }
이 코드 조각은 루프 내의 run() 예외 처리를 캡슐화하여 이벤트 루프가 오류 없이 종료될 때까지 계속 실행되도록 합니다. io_service의 예외 처리에 대한 추가 문서는
위 내용은 Boost::asio::io_service::run()에서 발생한 예외를 잡아야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!