diff --git a/xplat/Flipper/FlipperConnectionImpl.h b/xplat/Flipper/FlipperConnectionImpl.h index b2f6c50dd..e9578480f 100644 --- a/xplat/Flipper/FlipperConnectionImpl.h +++ b/xplat/Flipper/FlipperConnectionImpl.h @@ -33,7 +33,15 @@ class FlipperConnectionImpl : public FlipperConnection { responder->error(folly::dynamic::object("message", errorMessage)); return; } - receivers_.at(method)(params, responder); + try { + receivers_.at(method)(params, responder); + } catch (const std::exception& ex) { + std::string errorMessage = "Receiver " + method + " failed with error. "; + std::string reason = ex.what(); + errorMessage += "Error: '" + reason + "'."; + log("Error: " + errorMessage); + responder->error(folly::dynamic::object("message", errorMessage)); + } } void send(const std::string& method, const folly::dynamic& params) override {