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

SWIG: reuse a selective exception handler?

本文关键字:选择性 异常处理程序 SWIG      更新时间:2023-10-16

我正在使用SWIG编写%异常处理程序。我想使用两个不同的处理程序:一个用于特殊情况,另一个用于其他所有情况。有办法做到这一点吗?例如,现在,我有这个:

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

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

好吧,您总是可以使用SWIG宏:

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

,然后使用

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