Bonjours à tous,
j'étais en train de tester les exceptions des streams en c++, j'ai donc écris ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <iostream> #include <climits> #include "person.h" void cin_state(); int main() { std::cin.exceptions(std::ios::failbit); int x; cin_state(); try { std::cin >> x; } catch (std::ios_base::failure const &problem) { cin_state(); std::cout << problem.what() << std::endl; std::cin.clear(); cin_state(); std::cin.ignore(INT_MAX, '\n'); } std::cout << x << std::endl; cin_state(); return 0; } void cin_state() { std::cout << "good : " << std::cin.good() << std::endl; std::cout << "eof : " << std::cin.eof() << std::endl; std::cout << "fail : " << std::cin.fail() << std::endl; std::cout << "bad : " << std::cin.bad() << std::endl; std::cout << "state : " << std::cin.rdstate() << std::endl; } |
mais le block try n'attrape pas l'exception et le programme me sort ça
1 2 3 4 5 6 7 8 9 10 11 | # ludovic at Tardis in ~workspace/C++/bordel [20:21:21] $ ./executable good : 1 eof : 0 fail : 0 bad : 0 state : 0 ao terminate called after throwing an instance of 'std::ios_base::failure' what(): basic_ios::clear [1] 8837 abort (core dumped) ./executable |
Si vous pourriez m'expliquer pourquoi ça ne fonctionne pas cela me sera d'une grande aide.
Merci d'avance pour vos réponces
+0
-0