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

SWIG: reuse a selective exception handler?

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

%exception {
   //basic error handling
}

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

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

好吧,您可以随时使用 SWIG 宏:

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

然后使用

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