Cześć, nie wiem dlaczego pierwszy przygotowany blok catch nie łapie mi rzuconego wyjątku. Dopiero ogolny blok catch(...) to robi. Proszę o jakieś nakierowanie, dzięki.
double d;
fstream file("f.txt"); // plik istnieje, jest w nim tekst
if ( !file )
cout << "File doesn't exist" << endl;
try {
file.exceptions(fstream::failbit);
file >> d;
}
catch (const ios_base::failure& e) {
cout << "Caught an exception ios::failure\n"
<< "Info: " << e.what() << endl;
}
catch (...) { // bez tego bloku zostaje wywolana funkcja terminate
cout << "Exception caught by 'catch(...)'\n";
cout << "read state: " << file.rdstate() << endl; // jest ustawiony failbit
}
file.close();