我试图通过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节点的句柄是否有效(即非空)?或者,我如何将异常传递给我的调用代码?