ストリームに何かが発生した場合にカスタム例外をスローできる writeBinary(ostream) メソッドを持つクラス X があります。
fstream への書き込みとエラーチェックの正しい方法は何ですか?
これが私のバージョンです: 何かが欠けているかどうか、またはエラーをキャッチする必要があるかどうかを知りたいです。
ofstream ofs("X.binary.tmp");
if (!ofs) {
cerr << "Could not open file for writing";
throw runtime_error("Could not open file for writing");
}
try {
x.writeBinary(ofs);
} catch(CustomException& e) {
// remove the temporary file
int x = unlink("X.binary.tmp");
if (x) {
cerr << "Failed to remove file";
}
throw;
}
if (!ofs) { // is this check necessary?
int x = unlink("X.binary.tmp"):
if (x) {
cerr << "Failed to remove file";
}
throw std::runtime_error("Stream error");
}
rename("X.binary.tmp", "X.binary");
この寄せ集めの例外を単純化できますか?