6

ライブラリを作成していて、エラーと例外をきめ細かく制御したいとします。

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

foo()をスローするように実装し、std::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には2つのバージョンがあります

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

例外が少ない方が常に優れているため、2番目の例外を使用する必要があります。

于 2012-09-15T14:42:58.237 に答える