msdnからは、すべての例外を処理するわけではないようですIMessageFilter
。たとえば、ある時点で、Officeアプリケーションはオブジェクトモデルを「一時停止」します。その時点では、オブジェクトモデルを呼び出すことができず、次のようにスローされます。0x800AC472 (VBA_E_IGNORE)
これを回避するには、呼び出しをループに入れて、成功するのを待つ必要があります。
while(true)
{
try
{
office_app.DoSomething();
break;
}
catch(COMException ce)
{
LOG(ce.Message);
}
}
私の質問は、このボイラープレートコードがOfficeアプリのオブジェクトモデルへの呼び出しごとに必要な場合、実装する意味はありますIMessageFilter
か?