std::uncaught_exception()
デストラクタからのスローは一般的に悪い考えであることは知っていますが、デストラクタから安全にスローするために使用できるかどうか疑問に思っていました。
次の RAII タイプを検討してください。
struct RAIIType {
...
~RAIIType() {
//do stuff..
if (SomethingBadHappened()) {
//Assume that if an exception is already active, we don't really need to detect this error
if (!std::uncaught_exception()) {
throw std::runtime_error("Data corrupted");
}
}
}
};
これは c++11 の UB ですか? 悪いデザインですか?