「すべての例外」を「確実に」確認するのは常に意味がありますか?たとえば:catch(...)は常に意味がありますか?
try
{
Socket_Listen();
if(Return_Value == SOCKET_ERROR)
{
throw SOCKET_LISTEN_ERROR;
}
__LOG__ << "Listening..." << endl;
}
catch(EError_ID)
{
__LOG__;
Get_Last_Error_As_String(__FUNCTION__);
}
catch(...)
{
__LOG__ << "WARNING: An unknown error occurred." << endl;
}
私は、複数のエラーIDが含まれている大きな列挙型の一部である、私は自分自身(SOCKET_LISTEN_ERROR
)を定義したエラーを投げています。私が投げたもの以外に、ここに投げ込まれた何か他の例外がある可能性はありますか?完全を期すために、ここにSocket_Listen()
次のとおりです。
void CTCPServer::Socket_Listen()
{
Return_Value = listen(Socket,
2);
}
私はいくつかの例外が発生するかもしれないことを知っているほうがよいと思います。他の例外が発生した場合、コードに欠陥がある可能性があります。また、catch(...)をキャッチすることで、例外に関する情報を取り除くことになります。 – ForceBru
'完全性のために'あなたは冗談か? [最小、完全、および検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)例外、errnoのような変数、戻りコードなど、あなたが知っているものすべてを混ぜているようです。 1つのエラー処理戦略を選択し、それに固執する。場合によっては例外を無効にする(http://programmers.stackexchange.com/questions/113479/are-there-any-real-world-cases-for-c-with-exceptions)(gamedevでは一般的です)。 – Drop
すべての例外をキャッチするための唯一の本当の良い使い方は、特定のポイントで起こった本当に/本当に/実際には何かを記録することです。 **例外を再投げ**ます。 –