J'essaie de faire un runtime_error personnalisé simple. Je définis la classe:Comment faire ma propre classe d'erreur d'exécution personnalisée?
#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()){}
};
};
Je jette l'erreur:
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);
}
}
Et j'utiliser un bloc try/catch
try{
checkFileExistence(fileName);
}
catch(utils::FileNotFoundException& fnfe)
{
std::cout << fnfe.what() << std::endl;
}
Erreur d'exécution est lancée correctement comme FileNotFoundException mais la ligne avec std :: cout n'est jamais atteint et aucune ligne n'est écrite sur la console.
Toutes les idées sont les bienvenues. Merci!
Vous pouvez utiliser un argument par défaut au lieu de redéfinir dans votre classe d'exception. –