changeset 2232:e01df4893825 draft

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.
author Wladimir J. van der Laan <laanwj@gmail.com>
date Sat, 14 Apr 2012 09:41:05 +0200
parents 90a0623bca82
children 1312b588be63
files src/qt/bitcoin.cpp
diffstat 1 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -119,6 +119,15 @@
     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 @@
             return 1;
         }
     } catch (std::exception& e) {
-        PrintException(&e, "Runaway exception");
+        handleRunawayException(&e);
     } catch (...) {
-        PrintException(NULL, "Runaway exception");
+        handleRunawayException(NULL);
     }
     return 0;
 }