如何检查swig包装中Handle的有效性

时间:2018-02-20 14:04:07

标签: c# exception-handling swig

我试图通过swig包装的开放场景图节点从C#中正确处理场景图。如果我处理了一个osg节点,我可能会在稍后通过另一个指针返回它,这样我就可以在osg节点上调用一个已被处理的方法。

我无法捕捉它看起来的异常(我添加了Exception Handling from the documentation,但由于异常是在swig创建的.cs文件中引发的,我猜这不正确),但两者都不能我检查HandleRef null,因为Handle不公开。

以下代码来自swig创建的.cs文件,我只添加了注释以显示抛出了哪个Exception以及:

public Node get() {
    IntPtr cPtr = osgPINVOKE.NodeRef_get(swigCPtr);
    //the NodeRef_get throws an AccessViolationException, 
    //the Handle of swigCPtr is 0 and Wrapper is null
    Node ret = (cPtr == IntPtr.Zero) ? null : new Node(cPtr, false);
    return ret;
}

现在我的问题是:如何检查我的swig包裹的osg节点的句柄是否有效(即非空)?或者,我如何将异常传递给我的调用代码?

0 个答案:

没有答案