std::exception class is defined as follows
exception() throw() { } virtual ~exception() throw(); virtual const char* what() const throw();
This is called a throw specification. It defines which exceptions (if any) can be thrown from the function.
These sound great in theory, but there are issues with using them.
A good discussion about this can be found at this SO question.