c++ - SWIG:重用选择性异常处理程序?

标签 c++ swig

我正在使用 SWIG 编写一个 %Exception 处理程序。我想使用 2 个不同的处理程序:1 个用于特殊情况,另一个用于其他所有情况。有没有办法做到这一点?也就是说,现在,我有这个:

%exception {
   //basic error handling
}

%exception foo1 {
   //advanced error handling
}
%exception foo2 {
   //advanced error handling
}
%exception foo3 {
   //advanced error handling
}

但是因为所有 3 个 foo 处理程序都是相同的(它们是同一类的三个成员,如果这有帮助的话),所以它们最好是相同的代码。它看起来不像 SWIG documentation允许这样做。我认为我不能(或不想)对所有事情使用高级处理程序,因为它很昂贵并且可能不是线程安全的。我错过了什么吗?

最佳答案

好吧,您始终可以使用 SWIG 宏:

%define %custom_exception
{ 
  //advanced error handling
}
%enddef

然后使用

%exception foo1 %custom_exception
%exception foo2 %custom_exception
%exception foo3 %custom_exception

关于c++ - SWIG:重用选择性异常处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085945/

相关文章:

c++ - 使用 libxml2 (c++) 创建字符串

c++ - 使用 printf 样式格式设置 std::string 的内容

c++ - 试图删除 vector 指针重复项。为什么我不能使用 .erase()?

java - 将带有 vector<string> 的 cpp 代码翻译成 Android

python - 如何使用 SWIG 使 C++ 类可从 Python 迭代?

c++ - 如何使用 SWIG 为 Numpy 的 Matrix 类创建包装器?

c++ - 在 swig/python 中处理 char * 返回数据的正确方法

python - 如何为 Python Swigged C++ 对象创建和分配回调函数

c++ - 从 .txt 文件美化 C++ 中的 JSON 字符串

c++ - SAP ERP 与 C++ 的集成