在F#中捕获COM异常

时间:2010-07-29 05:39:20

标签: exception com f#

我有一些F#代码调用COM Automation对象上的方法。有时,COM对象会抛出异常。

我尝试用try:

包装对COM对象的调用
  try
    do some COM stuff
  with _ ->
    Printf.printf "got an exn\r\n"

但是根本没有调用异常处理代码,应用程序就死了。

我在控制台上看到的消息通常是:

The message filter indicated that the application is busy. 
(Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

如何捕获COM异常?

2 个答案:

答案 0 :(得分:1)

嗯,我认为这样可行......你是从STA(UI)线程调用的吗?你有一个简单的repro案例要分享(你在做什么 - Visual Studio自动化或什么)?它的味道几乎就像调用正在编组到另一个后台线程,并且该线程具有没有处理程序的异常。

答案 1 :(得分:0)

抱歉,我的错误。

这是一个导致错误的不同COM调用,毕竟不同的with-handler正在捕获错误。

所以尝试......完成工作。