mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 15:50:07 +01:00
rpc: Use type-safe exception to pass RPC help
This commit is contained in:
@@ -97,11 +97,8 @@ std::string CRPCTable::help(const std::string& strCommand, const JSONRPCRequest&
|
||||
UniValue unused_result;
|
||||
if (setDone.insert(pcmd->unique_id).second)
|
||||
pcmd->actor(jreq, unused_result, /*last_handler=*/true);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
// Help text is returned in an exception
|
||||
std::string strHelp = std::string(e.what());
|
||||
} catch (const HelpResult& e) {
|
||||
std::string strHelp{e.what()};
|
||||
if (strCommand == "")
|
||||
{
|
||||
if (strHelp.find('\n') != std::string::npos)
|
||||
|
||||
@@ -645,7 +645,7 @@ UniValue RPCHelpMan::HandleRequest(const JSONRPCRequest& request) const
|
||||
* the user is asking for help information, and throw help when appropriate.
|
||||
*/
|
||||
if (request.mode == JSONRPCRequest::GET_HELP || !IsValidNumArgs(request.params.size())) {
|
||||
throw std::runtime_error(ToString());
|
||||
throw HelpResult{ToString()};
|
||||
}
|
||||
UniValue arg_mismatch{UniValue::VOBJ};
|
||||
for (size_t i{0}; i < m_args.size(); ++i) {
|
||||
|
||||
@@ -67,6 +67,10 @@ class FillableSigningProvider;
|
||||
class CScript;
|
||||
struct Sections;
|
||||
|
||||
struct HelpResult : std::runtime_error {
|
||||
explicit HelpResult(const std::string& msg) : std::runtime_error{msg} {}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets all existing output types formatted for RPC help sections.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user