6

假设我们正在编写一个库,并且我们希望提供对错误和异常的细粒度控制:

void foo();
void foo(std::error_code&);

如果我们实现foo()为抛出 astd::system_error并让foo(std::error_code&)捕获所有异常并提取 error_code。

或者我们是否实现foo(std::error_code&)了一个永不抛出的函数,并foo()根据错误代码的存在抛出一个函数?

4

2 回答 2

3

boost库与异常一起工作boost::system::error_code,所以,我认为你可以定位这个库。例如boost::asio::basic_stream_socket::connect有两个版本

void connect(
    const endpoint_type & peer_endpoint);

boost::system::system_error 失败时抛出。

boost::system::error_code connect(
    const endpoint_type & peer_endpoint,
    boost::system::error_code & ec);

ec 设置以指示发生了什么错误(如果有)。

但这取决于什么foo,我也认为。

于 2012-09-15T14:50:04.517 回答
-4

更少的异常总是更好,所以你应该使用第二个。

于 2012-09-15T14:42:58.237 回答