使用SWIG将C++库移植到Go例外,此代码作为如何移植抛出异常的C++库的示例。所有抛出异常的方法都包含在try/catch块中,这些块将异常转换为恐慌,然后恢复以返回go错误。

DemoLib C++类有两种方法(DivideByNegativeThrows ),它们在某些输入上抛出异常,还有一种方法(NeverThrows)永远不会抛出异常。


DemoLib::DemoLib() {}



double DemoLib::DivideBy(int n) {

 if (n == 0) {

 throw std::invalid_argument(\"Cannot divide by zero\");

 }

 return 1.0 / n;

}