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

前端 未结 3 1870
感动是毒
感动是毒 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条回答
  •  旧时难觅i
    2020-12-01 14:25

    Short answer: no. Even checking errno after you detect failure (using e.g. bad(), fail()) after various operations doesn't reliably work. Creating an ifstream/ofstream wrapping a file that can't be opened doesn't necessarily set a failure bit until you try to read, write, or close it.

    Long answer: you can call ios::exceptions(ios_base::iostate) to request that ios_base::ios_failure exceptions be thrown when a corresponding bit (badbit, failbit, eofbit) is set, but this (at least on GNU and Microsoft C++ libraries) doesn't get you any more information than manually checking the bits, and ends up being largely pointless, IMHO.

提交回复
热议问题