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
我正在使用 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