aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2012-04-14 09:41:05 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2012-04-14 18:35:42 +0200
commita7a0c7a1bf3461bd43aacaf03ee5015903ead168 (patch)
tree954c026838c1da1ba8ce66af605430207047167d /src
parent6b8e7eefccf8d27c145d2e694037c2e10984f748 (diff)
Show a message box when runaway exception happens
This is more clear to users than when the program simply disappears (usually during initialization). It still logs the message to the console and debug log as well.
Diffstat (limited to 'src')
-rw-r--r--src/qt/bitcoin.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index bfb49cbcab..463b2cfa79 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -119,6 +119,15 @@ std::string _(const char* psz)
return QCoreApplication::translate("bitcoin-core", psz).toStdString();
}
+/* Handle runaway exceptions. Shows a message box with the problem and quits the program.
+ */
+static void handleRunawayException(std::exception *e)
+{
+ PrintExceptionContinue(e, "Runaway exception");
+ QMessageBox::critical(0, "Runaway exception", BitcoinGUI::tr("A fatal error occured. Bitcoin can no longer continue safely and will quit.") + QString("\n\n") + QString::fromStdString(strMiscWarning));
+ exit(1);
+}
+
#ifdef WIN32
#define strncasecmp strnicmp
#endif
@@ -284,9 +293,9 @@ int main(int argc, char *argv[])
return 1;
}
} catch (std::exception& e) {
- PrintException(&e, "Runaway exception");
+ handleRunawayException(&e);
} catch (...) {
- PrintException(NULL, "Runaway exception");
+ handleRunawayException(NULL);
}
return 0;
}