これは、自動的にエラーの説明を取得し、正しくhow to throw通常のWin32エラーであり、それはうまく見事に動作します:FAILED(HRESULT)からstd :: system_error例外をスローする方法はありますか?
if (!SomeWinFunc()) {
throw std::system_error(GetLastError(),
std::system_category(),
"SomeWinFunc crashed badly");
}
しかし、私はこのようなidiomaticallyをチェックされたCOMエラーに対処する方法については不確かです。
HRESULT hr = comObj->SomeFunc();
if (FAILED(hr)) {
throw std::system_error(hr, // <-- is it correct here?
std::system_category(),
"SomeFunc crashed right now");
}
それは、HRESULT
system_error
に渡す正しいです、またはCOM関数から例外をスローする別の方法は何ですか?
これでどこにいらっしゃいましたか? –
@MichaelGunter、私はまだ100%正しい解決策(あなたのコードで始まっているかもしれません)を実装していませんでしたが、私のニーズはシステムCOMオブジェクトを扱っているだけなので、質問に書いたアプローチはうまくいく。私は時間を見つけたら直ちにこれを深くするつもりです。 – Rodrigo