aboutsummaryrefslogtreecommitdiff
path: root/src/qt/rpcconsole.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2012-08-31 17:40:13 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2012-08-31 17:41:58 +0200
commitb5c1467a7d7d261de5f87d6f26a00cf5ab230dfb (patch)
tree5c8b9337c242909db709c80e55ffaf76ee6d0536 /src/qt/rpcconsole.cpp
parent576b5efe93cdcd544c205f4c4f8f1696e6e907ee (diff)
downloadbitcoin-b5c1467a7d7d261de5f87d6f26a00cf5ab230dfb.tar.xz
In RPC console, attempt to format errors
Try to display a nicer message instead of dumping raw JSON object when possible. If the error somehow doesn't have the required 'code' and 'message' fields, fall back to printing raw JSON object.
Diffstat (limited to 'src/qt/rpcconsole.cpp')
-rw-r--r--src/qt/rpcconsole.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp
index 470eba732c..6e48fbe8da 100644
--- a/src/qt/rpcconsole.cpp
+++ b/src/qt/rpcconsole.cpp
@@ -153,7 +153,8 @@ void RPCExecutor::request(const QString &command)
}
if(args.empty())
return; // Nothing to do
- try {
+ try
+ {
std::string strPrint;
// Convert argument list to JSON objects in method-dependent way,
// and pass it along with the method name to the dispatcher.
@@ -173,7 +174,17 @@ void RPCExecutor::request(const QString &command)
}
catch (json_spirit::Object& objError)
{
- emit reply(RPCConsole::CMD_ERROR, QString::fromStdString(write_string(json_spirit::Value(objError), false)));
+ try // Nice formatting for standard-format error
+ {
+ int code = find_value(objError, "code").get_int();
+ std::string message = find_value(objError, "message").get_str();
+ emit reply(RPCConsole::CMD_ERROR, QString::fromStdString(message) + " (code " + QString::number(code) + ")");
+ }
+ catch(std::runtime_error &) // raised when converting to invalid type, i.e. missing code or message
+ {
+ // Show raw JSON object
+ emit reply(RPCConsole::CMD_ERROR, QString::fromStdString(write_string(json_spirit::Value(objError), false)));
+ }
}
catch (std::exception& e)
{