Report InvalidParams for serialization error

This commit is contained in:
Fangrui Song 2018-10-30 22:26:01 -07:00
parent c1422c7a8d
commit c4bf9c5d6a

View File

@ -10,9 +10,10 @@
#include "query_utils.hh" #include "query_utils.hh"
#include "serializers/json.hh" #include "serializers/json.hh"
using namespace clang;
#include <algorithm> #include <algorithm>
#include <stdexcept>
using namespace clang;
MAKE_HASHABLE(ccls::SymbolIdx, t.usr, t.kind); MAKE_HASHABLE(ccls::SymbolIdx, t.usr, t.kind);
@ -192,8 +193,16 @@ void MessageHandler::Run(InMessage &msg) {
if (it != method2request.end()) { if (it != method2request.end()) {
try { try {
it->second(reader, reply); it->second(reader, reply);
} catch (std::invalid_argument &ex) {
lsResponseError err;
err.code = lsErrorCodes::InvalidParams;
err.message = "invalid params of " + msg.method + ": " + ex.what();
reply.Error(err);
} catch (...) { } catch (...) {
LOG_S(ERROR) << "failed to process request " << msg.method; lsResponseError err;
err.code = lsErrorCodes::InternalError;
err.message = "failed to process " + msg.method;
reply.Error(err);
} }
} else { } else {
lsResponseError err; lsResponseError err;