3

我用 C# 编写了一个 ActiveX 控件,使用 COM 互操作来公开方法/属性。

[ComVisible(true)]
class COMClass:ICOMClass
{ 
     public string methodA()
     {
          string str = "abc";
          if(str != "abcd")
              throw new Exception("invalid string");
         return str;
     }
}
[ComVisible(true)]
interface ICOMClass
{
    string methodA();
}

有没有办法处理javascript中C#抛出的异常?我找遍了,但我找不到任何东西?

例如。

var x = new ActiveXObject("COMClass");
try{
   x.methodA
}
catch(e) { 
   alert(e);
}
4

1 回答 1

2

打电话alert(e.message)对我有用。

确保您的 ActiveX 类正在实现IObjectSafety

using System;
using System.Runtime.InteropServices;

[ComImport()]
[Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IObjectSafety
{
    [PreserveSig()]
    int GetInterfaceSafetyOptions(ref Guid riid, out int pdwSupportedOptions, out int pdwEnabledOptions);

    [PreserveSig()]
    int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions);
}
于 2013-06-19T19:03:17.860 回答