このSOの回答に基づいて:例外の特定の部分のみを確認する必要がある場合は、OSおよび複数のバージョンのOL間でCOMExceptionを適切に処理するために、COMException固有のエラーコードをキャッチします。例えば、
private const uint HRESULT_OPERATIONABORTED = 0x80004004;
// ...
try {
// something that could throw COMExceptions
} catch (System.Runtime.InteropServices.COMException e) {
switch ((uint)e.ErrorCode) {
case HRESULT_OPERATIONABORTED:
break;
default:
break;
}
}
これは十分にクロスプラットフォームですか、それともエラーコードの一部のみを考慮する必要がありますか?
編集-明確にするために、私の正確な質問は、比較が具体的すぎるかどうか(uint)e.ErrorCode
(0x80004004
つまり、OS / OLに関係なく、常にこの特定のエラーが発生するかどうか0x80004004
)、またはこれが適切な方法であるかどうかです。 。