Index: code/trunk/src/libraries/core/Core.cc
===================================================================
--- code/trunk/src/libraries/core/Core.cc	(revision 5738)
+++ code/trunk/src/libraries/core/Core.cc	(revision 5747)
@@ -284,11 +284,7 @@
                             DynLibManager::getInstance().load(librarypath.string());
                         }
-                        catch (const std::exception& e)
-                        {
-                            COUT(1) << "Couldn't load module \"" << librarypath.string() << "\": " << e.what() << std::endl;
-                        }
                         catch (...)
                         {
-                            COUT(1) << "Couldn't load module \"" << librarypath.string() << "\"" << std::endl;
+                            COUT(1) << "Couldn't load module \"" << librarypath.string() << "\": " << Exception::handleMessage() << std::endl;
                         }
                     }
@@ -298,11 +294,7 @@
             }
         }
-        catch (const std::exception& e)
-        {
-            COUT(1) << "An error occurred while loading modules: " << e.what() << std::endl;
-        }
         catch (...)
         {
-            COUT(1) << "An error occurred while loading modules." << std::endl;
+            COUT(1) << "An error occurred while loading modules: " << Exception::handleMessage() << std::endl;
         }
 
@@ -398,6 +390,6 @@
         catch (...)
         {
-            COUT(0) << "An exception occurred during 'new GraphicsManager' while "
-                    << "another exception was being handled. This will lead to undefined behaviour!" << std::endl
+            COUT(0) << "An exception occurred during 'unloadGraphics':" << Exception::handleMessage() << std::endl
+                    << "Another exception might be being handled which may lead to undefined behaviour!" << std::endl
                     << "Terminating the program." << std::endl;
             abort();
Index: code/trunk/src/libraries/core/Game.cc
===================================================================
--- code/trunk/src/libraries/core/Game.cc	(revision 5738)
+++ code/trunk/src/libraries/core/Game.cc	(revision 5747)
@@ -37,5 +37,4 @@
 #include <exception>
 #include <boost/weak_ptr.hpp>
-#include <CEGUIExceptions.h>
 
 #include "util/Debug.h"
@@ -204,5 +203,5 @@
             catch (...)
             {
-                COUT(0) << "An exception occurred in the Core preUpdate: " << Game::getExceptionMessage() << std::endl;
+                COUT(0) << "An exception occurred in the Core preUpdate: " << Exception::handleMessage() << std::endl;
                 COUT(0) << "This should really never happen! Closing the program." << std::endl;
                 this->stop();
@@ -218,6 +217,6 @@
             catch (...)
             {
-            COUT(0) << "An exception occurred in the Core postUpdate: " << Game::getExceptionMessage() << std::endl;
-            COUT(0) << "This should really never happen! Closing the program." << std::endl;
+                COUT(0) << "An exception occurred in the Core postUpdate: " << Exception::handleMessage() << std::endl;
+                COUT(0) << "This should really never happen! Closing the program." << std::endl;
                 this->stop();
                 break;
@@ -254,5 +253,5 @@
                 catch (...)
                 {
-                    COUT(1) << "Error: Loading GameState '" << requestedStateNode->name_ << "' failed: " << Game::getExceptionMessage() << std::endl;
+                    COUT(1) << "Error: Loading GameState '" << requestedStateNode->name_ << "' failed: " << Exception::handleMessage() << std::endl;
                     // All scheduled operations have now been rendered inert --> flush them and issue a warning
                     if (this->requestedStateNodes_.size() > 1)
@@ -285,5 +284,5 @@
             catch (...)
             {
-                COUT(1) << "An exception occurred while updating '" << (*it)->getName() << "': " << Game::getExceptionMessage() << std::endl;
+                COUT(1) << "An exception occurred while updating '" << (*it)->getName() << "': " << Exception::handleMessage() << std::endl;
                 COUT(1) << "This should really never happen!" << std::endl;
                 COUT(1) << "Unloading all GameStates depending on the one that crashed." << std::endl;
@@ -593,5 +592,5 @@
         catch (...)
         {
-            COUT(2) << "Warning: Unloading GameState '" << name << "' threw an exception: " << Game::getExceptionMessage() << std::endl;
+            COUT(2) << "Warning: Unloading GameState '" << name << "' threw an exception: " << Exception::handleMessage() << std::endl;
             COUT(2) << "         There might be potential resource leaks involved! To avoid this, improve exception-safety." << std::endl;
         }
@@ -608,31 +607,4 @@
     }
 
-    /*static*/ std::string Game::getExceptionMessage()
-    {
-        std::string exceptionMessage;
-        try
-        {
-            // rethrow
-            throw;
-        }
-        catch (const std::exception& ex)
-        {
-            return ex.what();
-        }
-        catch (const CEGUI::Exception& ex)
-        {
-#if CEGUI_VERSION_MAJOR == 0 && CEGUI_VERSION_MINOR < 6
-            return GeneralException(ex.getMessage().c_str()).getDescription();
-#else
-            return GeneralException(ex.getMessage().c_str(), ex.getLine(),
-                ex.getFileName().c_str(), ex.getName().c_str()).getDescription();
-#endif
-        }
-        catch (...)
-        {
-            return "Unknown exception";
-        }
-    }
-
     std::map<std::string, shared_ptr<Game::GameStateFactory> > Game::GameStateFactory::factories_s;
 
Index: code/trunk/src/libraries/core/Game.h
===================================================================
--- code/trunk/src/libraries/core/Game.h	(revision 5738)
+++ code/trunk/src/libraries/core/Game.h	(revision 5747)
@@ -155,11 +155,4 @@
         // ScopeGuard helper function
         void resetChangingState() { this->bChangingState_ = false; }
-        /**
-        @brief
-            Retrieves information from an exception caught with "..."
-        @remarks
-            Never ever call this function without an exception in the stack!
-        */
-        static std::string getExceptionMessage();
 
         scoped_ptr<Clock>                  gameClock_;
Index: code/trunk/src/libraries/core/GraphicsManager.cc
===================================================================
--- code/trunk/src/libraries/core/GraphicsManager.cc	(revision 5738)
+++ code/trunk/src/libraries/core/GraphicsManager.cc	(revision 5747)
@@ -172,5 +172,5 @@
         // scripts for the 1.6 version and then remove the inserted "particle_system"
         // keyword. But we need to supply these new scripts as well, which is why
-        // there is an extra Ogre::Archive dealing with in the memory.
+        // there is an extra Ogre::Archive dealing with it in the memory.
         using namespace Ogre;
         ArchiveManager::getSingleton().addArchiveFactory(memoryArchiveFactory_.get());
Index: code/trunk/src/libraries/core/IRC.cc
===================================================================
--- code/trunk/src/libraries/core/IRC.cc	(revision 5738)
+++ code/trunk/src/libraries/core/IRC.cc	(revision 5747)
@@ -32,4 +32,5 @@
 
 #include "util/Convert.h"
+#include "util/Exception.h"
 #include "ConsoleCommand.h"
 #include "CoreIncludes.h"
@@ -64,6 +65,6 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl (IRC) error: " << e.what();   }
-        catch (std::exception const &e)
-        {   COUT(1) << "Error while initializing Tcl (IRC): " << e.what();   }
+        catch (...)
+        {   COUT(1) << "Error while initializing Tcl (IRC): " << Exception::handleMessage();   }
 
         this->nickname_ = "orx" + multi_cast<std::string>(static_cast<unsigned int>(rand()));
@@ -94,6 +95,6 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl (IRC) error: " << e.what();   }
-        catch (std::exception const &e)
-        {   COUT(1) << "Error while executing Tcl (IRC): " << e.what();   }
+        catch (...)
+        {   COUT(1) << "Error while executing Tcl (IRC): " << Exception::handleMessage();   }
 
         return false;
Index: code/trunk/src/libraries/core/Loader.cc
===================================================================
--- code/trunk/src/libraries/core/Loader.cc	(revision 5738)
+++ code/trunk/src/libraries/core/Loader.cc	(revision 5747)
@@ -187,16 +187,9 @@
             return false;
         }
-        catch (std::exception& ex)
+        catch (...)
         {
             COUT(1) << std::endl;
             COUT(1) << "An error occurred in Loader.cc while loading " << file->getFilename() << ":" << std::endl;
-            COUT(1) << ex.what() << std::endl;
-            COUT(1) << "Loading aborted." << std::endl;
-            return false;
-        }
-        catch (...)
-        {
-            COUT(1) << std::endl;
-            COUT(1) << "An unknown error occurred in Loader.cc while loading " << file->getFilename() << ":" << std::endl;
+            COUT(1) << Exception::handleMessage() << std::endl;
             COUT(1) << "Loading aborted." << std::endl;
             return false;
Index: code/trunk/src/libraries/core/TclBind.cc
===================================================================
--- code/trunk/src/libraries/core/TclBind.cc	(revision 5738)
+++ code/trunk/src/libraries/core/TclBind.cc	(revision 5747)
@@ -35,4 +35,5 @@
 #include "SpecialConfig.h"
 #include "util/Debug.h"
+#include "util/Exception.h"
 #include "util/StringUtils.h"
 #include "CommandExecutor.h"
@@ -92,8 +93,6 @@
             catch (Tcl::tcl_error const &e)
             {   COUT(1) << "Tcl error while creating Tcl-interpreter: " << e.what() << std::endl;   }
-            catch (std::exception const &e)
-            {   COUT(1) << "Error while creating Tcl-interpreter: " << e.what() << std::endl;   }
             catch (...)
-            {   COUT(1) << "Error while creating Tcl-interpreter." << std::endl;   }
+            {   COUT(1) << "Error while creating Tcl-interpreter: " << Exception::handleMessage() << std::endl;   }
         }
     }
@@ -115,8 +114,6 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl error while creating Tcl-interpreter: " << e.what() << std::endl; COUT(1) << "Error: Tcl isn't properly initialized. Orxonox might possibly not work like that." << std::endl;   }
-        catch (std::exception const &e)
-        {   COUT(1) << "Error while creating Tcl-interpreter: " << e.what() << std::endl; COUT(1) << "Error: Tcl isn't properly initialized. Orxonox might possibly not work like that." << std::endl;   }
         catch (...)
-        {   COUT(1) << "Error while creating Tcl-interpreter." << std::endl; COUT(1) << "Error: Tcl isn't properly initialized. Orxonox might possibly not work like that." << std::endl;   }
+        {   COUT(1) << "Error while creating Tcl-interpreter: " << Exception::handleMessage() << std::endl; COUT(1) << "Error: Tcl isn't properly initialized. Orxonox might possibly not work like that." << std::endl;   }
 
         return interpreter;
@@ -178,6 +175,6 @@
             catch (Tcl::tcl_error const &e)
             {   COUT(1) << "tcl> Error: " << e.what() << std::endl;   }
-            catch (std::exception const &e)
-            {   COUT(1) << "Error while executing Tcl: " << e.what() << std::endl;   }
+            catch (...)
+            {   COUT(1) << "Error while executing Tcl: " << Exception::handleMessage() << std::endl;   }
         }
 
@@ -199,6 +196,6 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl error: " << e.what() << std::endl;   }
-        catch (std::exception const &e)
-        {   COUT(1) << "Error while executing Tcl: " << e.what() << std::endl;   }
+        catch (...)
+        {   COUT(1) << "Error while executing Tcl: " << Exception::handleMessage() << std::endl;   }
 
         return false;
Index: code/trunk/src/libraries/core/TclThreadManager.cc
===================================================================
--- code/trunk/src/libraries/core/TclThreadManager.cc	(revision 5738)
+++ code/trunk/src/libraries/core/TclThreadManager.cc	(revision 5747)
@@ -37,4 +37,5 @@
 
 #include "util/Convert.h"
+#include "util/Exception.h"
 #include "Clock.h"
 #include "CommandExecutor.h"
@@ -285,8 +286,6 @@
         catch (const Tcl::tcl_error& e)
         {   bundle->interpreter_ = 0; COUT(1) << "Tcl error while creating Tcl-interpreter (" << id_string << "): " << e.what() << std::endl;   }
-        catch (const std::exception& e)
-        {   bundle->interpreter_ = 0; COUT(1) << "Error while creating Tcl-interpreter (" << id_string << "): " << e.what() << std::endl;   }
         catch (...)
-        {   bundle->interpreter_ = 0; COUT(1) << "An error occurred while creating a new Tcl-interpreter (" << id_string << ")" << std::endl;   }
+        {   bundle->interpreter_ = 0; COUT(1) << "Error while creating Tcl-interpreter (" << id_string << "): " << Exception::handleMessage() << std::endl;   }
     }
 
Index: code/trunk/src/libraries/core/XMLPort.h
===================================================================
--- code/trunk/src/libraries/core/XMLPort.h	(revision 5738)
+++ code/trunk/src/libraries/core/XMLPort.h	(revision 5747)
@@ -591,12 +591,8 @@
                                                     throw ex;
                                                 }
-                                                catch (std::exception& ex)
+                                                catch (...)
                                                 {
                                                     COUT(1) << "An error occurred while loading object:" << std::endl;
-                                                    COUT(1) << ex.what() << std::endl;
-                                                }
-                                                catch (...)
-                                                {
-                                                    COUT(1) << "An unknown error occurred while loading object." << std::endl;
+                                                    COUT(1) << Exception::handleMessage() << std::endl;
                                                 }
                                             }
Index: code/trunk/src/libraries/core/input/InputDevice.h
===================================================================
--- code/trunk/src/libraries/core/input/InputDevice.h	(revision 5738)
+++ code/trunk/src/libraries/core/input/InputDevice.h	(revision 5747)
@@ -42,4 +42,5 @@
 
 #include "util/Debug.h"
+#include "util/Exception.h"
 #include "core/Clock.h"
 #include "InputState.h"
@@ -145,5 +146,6 @@
             catch (...)
             {
-                COUT(1) << this->getClassName() << " destruction failed! Potential resource leak!" << std::endl;
+                COUT(1) << this->getClassName() << " destruction failed: " << Exception::handleMessage() << std::endl
+                        << "    Potential resource leak!" << std::endl;
             }
         }
Index: code/trunk/src/libraries/core/input/InputManager.cc
===================================================================
--- code/trunk/src/libraries/core/input/InputManager.cc	(revision 5738)
+++ code/trunk/src/libraries/core/input/InputManager.cc	(revision 5747)
@@ -330,5 +330,6 @@
             catch (...)
             {
-                CCOUT(1) << className << " destruction failed! Potential resource leak!" << std::endl;
+                COUT(1) << className << " destruction failed: " << Exception::handleMessage() << std::endl
+                        << "    Potential resource leak!" << std::endl;
             }
         }
@@ -342,5 +343,6 @@
         catch (...)
         {
-            CCOUT(1) << "OIS::InputManager destruction failed! Potential resource leak!" << std::endl;
+            COUT(1) << "OIS::InputManager destruction failed" << Exception::handleMessage() << std::endl
+                    << "    Potential resource leak!" << std::endl;
         }
         oisInputManager_ = NULL;
