J'utilise VC2010 et j'écris le code suivant pour tester la fonction "set_unexpected"."set_unexpected" ne fonctionne pas dans VC2010?
#include <iostream>
#include <exception>
void my_unexpected_handler()
{
std::cout << "unexpected handler" << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
set_unexpected(my_unexpected_handler);
throw 1;
return 0;
}
Cependant, « my_unexpected_handler » est jamais appelé (la chaîne n'est pas imprimé à la console, j'ai essayé de mettre en my_unexpected_handler point d'arrêt, n'a pas couru dans).
Quel est le problème avec mon code?
Merci
Désolé, j'ai mal compris l'exception inattendue. Cependant, même si je change le code à suivre
#include <iostream>
#include <exception>
void my_unexpected_handler()
{
std::cout << "unexpected handler" << std::endl;
}
void func() throw(int)
{
throw 'h';
}
int _tmain(int argc, _TCHAR* argv[])
{
std::set_unexpected(my_unexpected_handler);
func();
return 0;
}
Il ne fonctionne toujours pas? Autrement dit, "my_unexpected_handler" n'est pas appelé.
Ce code ne devrait pas même compiler. Vous devez qualifier 'set_unexpected' avec un' std :: '. Poster le code réel. En outre, vous êtes probablement à la recherche de 'set_terminate' si vous êtes dans' main'. – dirkgently
Faites attention aux avertissements: 'avertissement C4290: spécification d'exception C++ ignorée sauf pour indiquer qu'une fonction n'est pas __declspec (nothrow)' –