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

时间:2014-11-17 17:03:04

标签: c++ c++11 exception-handling

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

try {
    auto result = client->doSomething(someValue);
} catch(TransportException e) {
    cerr << "Connection failed..." << endl;
    client->getTransport()->reconnect(); // some reconnection logic
}

有很多方法,因此排除了扩展类或在其周围创建手动包装器。

我考虑过Macros,但是如果可能的话我不会不使用它。

我遇到this post在C ++中实现代理(就像在Java中一样),但我不确定如何捕获客户端方法抛出的异常。

有没有办法干净利落地实现这一目标? (我使用的是C ++ 11)。

0 个答案:

没有答案