Index: /code/trunk/src/libraries/core/IRC.cc
===================================================================
--- /code/trunk/src/libraries/core/IRC.cc	(revision 7173)
+++ /code/trunk/src/libraries/core/IRC.cc	(revision 7174)
@@ -66,6 +66,4 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl (IRC) error: " << e.what();   }
-        catch (...)
-        {   COUT(1) << "Error while initializing Tcl (IRC): " << Exception::handleMessage();   }
 
         this->nickname_ = "orx" + multi_cast<std::string>(static_cast<unsigned int>(rand()));
@@ -96,6 +94,4 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl (IRC) error: " << e.what();   }
-        catch (...)
-        {   COUT(1) << "Error while executing Tcl (IRC): " << Exception::handleMessage();   }
 
         return false;
Index: /code/trunk/src/libraries/core/TclBind.cc
===================================================================
--- /code/trunk/src/libraries/core/TclBind.cc	(revision 7173)
+++ /code/trunk/src/libraries/core/TclBind.cc	(revision 7174)
@@ -93,6 +93,4 @@
             catch (Tcl::tcl_error const &e)
             {   COUT(1) << "Tcl error while creating Tcl-interpreter: " << e.what() << std::endl;   }
-            catch (...)
-            {   COUT(1) << "Error while creating Tcl-interpreter: " << Exception::handleMessage() << std::endl;   }
         }
     }
@@ -114,6 +112,4 @@
         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 (...)
-        {   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;
@@ -175,6 +171,4 @@
             catch (Tcl::tcl_error const &e)
             {   COUT(1) << "tcl> Error: " << e.what() << std::endl;   }
-            catch (...)
-            {   COUT(1) << "Error while executing Tcl: " << Exception::handleMessage() << std::endl;   }
         }
 
@@ -196,6 +190,4 @@
         catch (Tcl::tcl_error const &e)
         {   COUT(1) << "Tcl error: " << 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 7173)
+++ /code/trunk/src/libraries/core/TclThreadManager.cc	(revision 7174)
@@ -287,6 +287,4 @@
         catch (const Tcl::tcl_error& e)
         {   bundle->interpreter_ = 0; COUT(1) << "Tcl error while creating Tcl-interpreter (" << id_string << "): " << e.what() << std::endl;   }
-        catch (...)
-        {   bundle->interpreter_ = 0; COUT(1) << "Error while creating Tcl-interpreter (" << id_string << "): " << Exception::handleMessage() << std::endl;   }
     }
 
Index: /code/trunk/src/libraries/core/input/InputDevice.h
===================================================================
--- /code/trunk/src/libraries/core/input/InputDevice.h	(revision 7173)
+++ /code/trunk/src/libraries/core/input/InputDevice.h	(revision 7174)
@@ -40,4 +40,5 @@
 #include <vector>
 #include <ois/OISInputManager.h>
+#include <ois/OISException.h>
 
 #include "util/Clock.h"
@@ -144,7 +145,7 @@
                 oisInputManager_->destroyInputObject(oisDevice_);
             }
-            catch (...)
+            catch (const OIS::Exception& ex)
             {
-                COUT(1) << this->getClassName() << " destruction failed: " << Exception::handleMessage() << std::endl
+                COUT(1) << this->getClassName() << " destruction failed: " << ex.eText << 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 7173)
+++ /code/trunk/src/libraries/core/input/InputManager.cc	(revision 7174)
@@ -306,15 +306,7 @@
                 continue;
             const std::string& className = device->getClassName();
-            try
-            {
-                delete device;
-                device = 0;
-                CCOUT(4) << className << " destroyed." << std::endl;
-            }
-            catch (...)
-            {
-                COUT(1) << className << " destruction failed: " << Exception::handleMessage() << std::endl
-                        << "    Potential resource leak!" << std::endl;
-            }
+            delete device;
+            device = 0;
+            CCOUT(4) << className << " destroyed." << std::endl;
         }
         devices_.resize(InputDeviceEnumerator::FirstJoyStick);
@@ -325,7 +317,7 @@
             OIS::InputManager::destroyInputSystem(oisInputManager_);
         }
-        catch (...)
-        {
-            COUT(1) << "OIS::InputManager destruction failed" << Exception::handleMessage() << std::endl
+        catch (const OIS::Exception& ex)
+        {
+            COUT(1) << "OIS::InputManager destruction failed" << ex.eText << std::endl
                     << "    Potential resource leak!" << std::endl;
         }
Index: /code/trunk/src/libraries/tools/ResourceLocation.cc
===================================================================
--- /code/trunk/src/libraries/tools/ResourceLocation.cc	(revision 7173)
+++ /code/trunk/src/libraries/tools/ResourceLocation.cc	(revision 7174)
@@ -98,7 +98,7 @@
                 this->getPath(), this->getResourceGroup());
         }
-        catch (...)
+        catch (const Ogre::Exception& ex)
         {
-            COUT(1) << "Removing of a ResourceLocation failed: " << Exception::handleMessage() << std::endl;
+            COUT(1) << "Removing of a ResourceLocation failed: " << ex.what() << std::endl;
         }
     }
Index: /code/trunk/src/libraries/util/Exception.cc
===================================================================
--- /code/trunk/src/libraries/util/Exception.cc	(revision 7173)
+++ /code/trunk/src/libraries/util/Exception.cc	(revision 7174)
@@ -34,5 +34,7 @@
 
 #include "Exception.h"
+
 #include <CEGUIExceptions.h>
+#include "Debug.h"
 
 namespace orxonox
@@ -115,5 +117,7 @@
         catch (...)
         {
-            return "Unknown exception";
+            COUT(0) << "BIG WARNING: Unknown exception type encountered."
+                    << "Rethrowing" << endl;
+            throw;
         }
     }
Index: /code/trunk/src/orxonox/graphics/ParticleEmitter.cc
===================================================================
--- /code/trunk/src/orxonox/graphics/ParticleEmitter.cc	(revision 7173)
+++ /code/trunk/src/orxonox/graphics/ParticleEmitter.cc	(revision 7174)
@@ -114,8 +114,8 @@
                 this->particles_->setEnabled(this->isActive());
             }
-            catch (...)
+            catch (const std::exception& ex)
             {
                 COUT(1) << "Error: Couln't load particle effect \"" << this->source_ << "\" because:" << std::endl
-                        << Exception::handleMessage() << std::endl;
+                        << ex.what() << std::endl;
             }
         }
Index: /code/trunk/src/orxonox/sound/SoundManager.cc
===================================================================
--- /code/trunk/src/orxonox/sound/SoundManager.cc	(revision 7173)
+++ /code/trunk/src/orxonox/sound/SoundManager.cc	(revision 7174)
@@ -521,7 +521,7 @@
                 buffer.reset(new SoundBuffer(filename, this->effectsPool_.end()));
             }
-            catch (...)
-            {
-                COUT(1) << Exception::handleMessage() << std::endl;
+            catch (const std::exception& ex)
+            {
+                COUT(1) << ex.what() << std::endl;
                 return buffer;
             }
Index: /code/trunk/src/orxonox/worldentities/BigExplosion.cc
===================================================================
--- /code/trunk/src/orxonox/worldentities/BigExplosion.cc	(revision 7173)
+++ /code/trunk/src/orxonox/worldentities/BigExplosion.cc	(revision 7174)
@@ -72,7 +72,7 @@
                 this->init();
             }
-            catch (...)
-            {
-                COUT(1) << "Error: Couln't load particle effect in BigExplosion: " << Exception::handleMessage() << std::endl;
+            catch (const std::exception& ex)
+            {
+                COUT(1) << "Error: Couln't load particle effect in BigExplosion: " << ex.what() << std::endl;
                 this->initZero();
             }
Index: /code/trunk/src/orxonox/worldentities/ExplosionChunk.cc
===================================================================
--- /code/trunk/src/orxonox/worldentities/ExplosionChunk.cc	(revision 7173)
+++ /code/trunk/src/orxonox/worldentities/ExplosionChunk.cc	(revision 7174)
@@ -59,7 +59,7 @@
                 this->attachOgreObject(this->smoke_->getParticleSystem());
             }
-            catch (...)
+            catch (const std::exception& ex)
             {
-                COUT(1) << "Error: Couln't load particle effect in ExplosionChunk: " << Exception::handleMessage() << std::endl;
+                COUT(1) << "Error: Couln't load particle effect in ExplosionChunk: " << ex.what() << std::endl;
                 this->fire_ = 0;
                 this->smoke_ = 0;
