OK, c'est "la Réponse à ma propre question" le temps...
Tout d'abord, merci à KennyTM pour l'histoire. Comme il le dit, C++ était PAS conçu avec des exceptions dès le premier jour, il est donc pas surprenant de constater que iostreams 'exception de la gestion a été boulonné par la suite.
Deuxièmement, comme Neil B souligne, avoir des exceptions sur le format d'entrée des erreurs de conversion serait une douleur importante. Cela m'a surpris, parce que je considérais iostreams comme un simple système de fichiers wrapper couche, et je n'avais pas envisagé ce cas à tous.
En troisième lieu, il apparaît BOOST apporte quelque chose à la fête: coup de pouce.IOStreams. Si je comprends bien, ces manipuler le faible niveau des I/O et de mise en mémoire tampon aspect de cours d'eau, laissant le régulier c++ IOStreams bibliothèque pour gérer les problèmes de conversion. Coup de pouce.IOStreams fait l'utilisation des exceptions dans la façon dont je m'attends. Si je comprends bien, Kenny exemple pourrait aussi ressembler à ceci:
#include <ostream>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/stream.hpp>
int main () {
boost::iostreams::stream_buffer <boost::iostreams::file_source> buf("test.txt");
std::istream file(&buf);
try {
std::string buf;
while (std::getline(file, buf))
std::cout << "Read> " << buf << "\n";
}
catch (std::ios_base::failure::failure e) {
std::cout << "Exception opening/reading file\n";
}
std::cout.flush();
file.close();
return 0;
}
Je pense que avec cette version, des choses comme "fichier non trouvé" doivent jeter, mais "istream' erreurs seront signalées par badbit/failbit n'.