抓住每个例外“只是为了确保”是否总是有意义的?例如:
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;
}
我正在抛出我自己定义的错误(SOCKET_LISTEN_ERROR
),这是包含多个错误ID的较大枚举的一部分。除了我抛出的那个之外,还有可能在这里抛出一些其他的异常吗?为了完整起见,这里是Socket_Listen()
:
void CTCPServer::Socket_Listen()
{
Return_Value = listen( Socket,
2 );
}
答案 0 :(得分:4)
相反,很少有意义捕获每个异常。退出catch
块时(不重新抛出),您告诉周围的代码已解决异常,程序可以继续正常运行。
当你在不知道它们是什么的情况下捕获所有异常时,你就不可能宣称一切正常。 忽略意外异常比吞下它们更好。让呼叫者担心他们(可能让他们去呼叫者的呼叫者,等等)。
您询问是否存在可能从该代码中抛出的任何其他异常。我不知道,你也不知道,抓住它们肯定没有意义。如果测试显示其他类型的异常,并且该位置是处理它们的正确位置,那么添加代码以在那里处理它们。但是,除非你知道会发生什么,否则请删除catch-all异常处理程序。