I was looking at the Exception source code, and found that it stores the message as a string member in the exception class. This behavior can result in termination of the program according to the C++ standard (15.5.1), since std::string does not guarantee a non-throwing copy constructor. I found a lot of instances in forums and on stackoverflow where this was said to be bad behavior, see e.g. the discussion in http://stackoverflow.com/questions/457020/how-lean-do-my-c-exception-classes-really-need-to-be.
Is this a deliberate decision in Poco? If so, why? std::runtime_error takes care of this problem by using a shared pointer to the string (at least in clang's libc++).