I am trying to make a simple custom runtime_error. I define a class:
#include <string> #include <stdexcept> namespace utils{ class FileNotFoundException: public std::runtime_error{ public: FileNotFoundException():runtime_error("File not found"){} FileNotFoundException(std::string msg):runtime_error(msg.c_str()){} }; };
Then I throw an error:
bool checkFileExistence( std::string fileName ) { boost::filesystem::path full_path = boost::filesystem::system_complete(boost::filesystem::path(fileName)); if (!boost::filesystem::exists(full_path)) { char msg[500]; _snprintf(msg,500,"File %s doesn't exist",fileName.c_str()); throw new FileNotFoundException(msg); } }
And I use a try / catch block
try{ checkFileExistence(fileName); } catch(utils::FileNotFoundException& fnfe) { std::cout << fnfe.what() << std::endl; }
A runtime error was correctly selected as a FileNotFoundException, but a line with std :: cout will never be reached, and no line will be sent to the console.
Any ideas are welcome. Thanks!
c ++ exception
Killrazor
source share