我已经使用 COM Interop 在 C# 中编写了一个 ActiveX 控件来公开方法/属性。
[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);
}
最佳答案
调用 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);
}
关于c# - 在 Javascript 中处理 ActiveX 控件异常(C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17198734/