C++ C++;-包装方法调用以捕获异常

C++ C++;-包装方法调用以捕获异常,c++,c++11,exception-handling,C++,C++11,Exception Handling,我有一个第三方客户端库,它有一系列通过套接字发送消息的方法。如果套接字变得无效(例如,与远程服务器的连接丢失),则这些方法会引发异常。我想把这些方法包装得干干净净,这样我就可以在一个中心位置捕获、记录和重新连接等。我基本上希望每次调用客户机对象上的任何方法时都避免使用这个锅炉板: try { auto result = client->doSomething(someValue); } catch(TransportException e) { cerr <<

我有一个第三方客户端库,它有一系列通过套接字发送消息的方法。如果套接字变得无效(例如,与远程服务器的连接丢失),则这些方法会引发异常。我想把这些方法包装得干干净净,这样我就可以在一个中心位置捕获、记录和重新连接等。我基本上希望每次调用客户机对象上的任何方法时都避免使用这个锅炉板:

try {
    auto result = client->doSomething(someValue);
} catch(TransportException e) {
    cerr << "Connection failed..." << endl;
    client->getTransport()->reconnect(); // some reconnection logic
}
试试看{
自动结果=客户端->剂量测量(someValue);
}捕获(运输例外){
cerr reconnect();//某些重新连接逻辑
}
有很多方法,因此不可能扩展类或围绕类创建手动包装器

我考虑过宏,但如果可能的话,我宁愿不使用它

我遇到了C++中的实现代理(类似于java),但我不知道如何捕获客户端方法抛出的异常。


有没有办法干净地做到这一点?(我使用C++ 11).< /p>将一个代码> STD::函数< /> >到一个在尝试/卡提中封装调用的方法,但该catch块将不能访问<代码>客户端< /C>对象。除非我也将客户端对象作为参数传递。相关: