私はこのプログラムを持っています(プログラムの一部は掲載されていません):
//Includes and functions
int main(int argc, char *argv[])
{
ifstream loc("achievements.loc", ios::binary);
getline(loc, header, static_cast<char>(1));
loc.seekg(15, ios::cur);
loc.read(reinterpret_cast<char*>(&subdirs), sizeof(subdirs));
for( int i = 0; i < nstrings; i++ )
{
loc.read(reinterpret_cast<char*>(&strid), sizeof(strid));
loc.read(reinterpret_cast<char*>(&stroffset), sizeof(stroffset));
curoffset = loc.tellg();
loc.seekg(strcodesbeg+16+stroffset);
getline(loc, codestring, '\0');
loc.seekg(curoffset);
}
}
次の場合にプログラムを終了したい: - ファイルが開かれていない。- getline によって取得されたヘッダー文字列が "String" と等しくありません。- 読み取り機能のいずれかが失敗します。- いずれかのシークが失敗します。- ストライド、1234 と一致しません。
C++ 例外を使用してこれを行うにはどうすればよいですか? try{}catch(...){}
たとえば、データを読み取ってEOF_REACHED
失敗時に送信する関数を作成する単一のブロックを使用する必要がありますか、または a try{}catch(var e){}catch(var2 e){}
、 a class
、またはその他の方法ですか?
単純な関数では例外の概念は理解できますが、プログラムが大きくなると複雑になります。
メイン関数で try catch ブロックを明示的に使用する C++ ソース コードも見つかりませんでしたが、例外で動作します。これはどのように可能ですか?