Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
649 views
in Technique[技术] by (71.8m points)

c++ - Get std::fstream failure error messages and/or exceptions

I'm using fstream. Is there any way to get the failure message/exception?

For example if I'm unable to open the file?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Streams by default do not throw exceptions on error, they set flags. You can make them throw exceptions by using the stream's exception() member function:

ifstream ifs;
ifs.exceptions( std::ios::failbit );   // throw if failbit get set

Theoretically, you could then do something like this:

try {
  int x;
  ifs >> x;
}
catch( const std::exception & ex ) {
   std::cerr << "Could not convert to int - reason is " 
                  << ex.what();
}

Unfortunately, the C++ Standard does not specify that thrown exceptions contain any error message, so you are in implementation specific territory here.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...