Skip to content

Commit 0b458f7

Browse files
committed
Be more consistent about turning uncaught exceptions into error objects
1 parent 37a1b7b commit 0b458f7

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

GraphQLService.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,7 +1058,10 @@ std::future<response::Value> Object::resolve(const SelectionSetParams & selectio
10581058
message << "Field error name: " << name
10591059
<< " error: duplicate field";
10601060

1061-
errors.emplace_back(response::Value(message.str()));
1061+
response::Value error(response::Type::Map);
1062+
1063+
error.emplace_back(strMessage, response::Value(message.str()));
1064+
errors.emplace_back(std::move(error));
10621065
}
10631066
else
10641067
{
@@ -1074,7 +1077,10 @@ std::future<response::Value> Object::resolve(const SelectionSetParams & selectio
10741077
message << "Field error name: " << name
10751078
<< " unknown error: " << ex.what();
10761079

1077-
errors.emplace_back(response::Value(message.str()));
1080+
response::Value error(response::Type::Map);
1081+
1082+
error.emplace_back(strMessage, response::Value(message.str()));
1083+
errors.emplace_back(std::move(error));
10781084
}
10791085

10801086
children.pop();

include/graphqlservice/GraphQLService.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,10 @@ struct ModifiedResult
532532
<< "[" << index << "] "
533533
<< " unknown error: " << ex.what();
534534

535-
errors.emplace_back(response::Value(message.str()));
535+
response::Value error(response::Type::Map);
536+
537+
error.emplace_back(strMessage, response::Value(message.str()));
538+
errors.emplace_back(std::move(error));
536539
}
537540

538541
children.pop();
@@ -575,8 +578,10 @@ struct ModifiedResult
575578
<< " unknown error: " << ex.what();
576579

577580
response::Value errors(response::Type::List);
581+
response::Value error(response::Type::Map);
578582

579-
errors.emplace_back(response::Value(message.str()));
583+
error.emplace_back(strMessage, response::Value(message.str()));
584+
errors.emplace_back(std::move(error));
580585
document.emplace_back(strErrors, std::move(errors));
581586
}
582587

tests.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,9 @@ TEST_F(TodayServiceCase, UnimplementedFieldError)
852852
const auto& errors = result["errors"];
853853
ASSERT_TRUE(errors.type() == response::Type::List);
854854
ASSERT_EQ(size_t(1), errors.size());
855-
const auto& message = errors[0];
855+
const auto& error = errors[0];
856+
ASSERT_TRUE(error.type() == response::Type::Map);
857+
const auto& message = error[service::strMessage];
856858
ASSERT_TRUE(message.type() == response::Type::String);
857859
ASSERT_EQ(R"e(Field name: unimplemented unknown error: Query::getUnimplemented is not implemented)e", message.get<const response::StringType&>());
858860
}

0 commit comments

Comments
 (0)