Je prends l'entrée de la console Windows/Linux de telle sorte que le mot de passe que les types d'utilisateur restent caché comme cela se produit dans presque tous les systèmes d'exploitation Linux. Comment dois-je gérer avec élégance l'exception renvoyée par l'extrait suivant?Gestion des exceptions C++
#ifdef _WIN32
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hStdin, &mode);
SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT));
std::string sTempPass;
getline(cin, sTempPass);
SetConsoleMode(hStdin, mode);
#elif __linux__
termios oldt;
tcgetattr(STDIN_FILENO, &oldt);
termios newt = oldt;
newt.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
std::string sTempPass;
getline(cin, sTempPass);
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
Et quels sont les scénarios possibles l'extrait ci-dessus peut lancer différents types d'exception et est-il une autre plate-forme de manière indépendante pour le faire?
Le code que vous avez posté ne comporte aucune exception. –
@ el.pescado: Il y a une invocation 'getline (cin, sTempPass); À tout le moins, cela peut déclencher une exception 'std :: bad_alloc' en raison du redimensionnement du tampon de chaîne de sortie. Le code * peut * jeter des exceptions. – IInspectable
@IInspectable vous avez raison. –