The member function className in the macro POCO_IMPLEMENTATION_EXCEPTIOPN is defined and declared as such:
const char* CLS::className() const throw()
But typeid could, in theory, create an exception bad_typeid, so why the throw(). In practice I understand the likelyhood of *this being null is 0 in this case. But wouldn't it better practice not to specify a throw() here?