Make code compile with libcpp.
Throw exceptions that contain an appropriate message for the current errno.

Also, catch exception as std::exception (by const reference) instead of WPP::Exception (by value). There is no need for a special exception class and catching by value slices the exception!
Use the iterator returned from find instead of calling operator[].
Code cleanup.