Get std::fstream failure error messages and/or exceptions

前端 未结 3 1869
感动是毒
感动是毒 2020-12-01 13:45

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

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

3条回答
  •  悲哀的现实
    2020-12-01 14:42

    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.

提交回复
热议问题