代码之家  ›  专栏  ›  技术社区  ›  dicroce

Win32::shutdown()返回-1,但WSAGetLastError()返回0?

  •  2
  • dicroce  · 技术社区  · 14 年前

    调用shutdown的代码如下所示:

    int ret = ::shutdown( _sok, mode );
    if( ret < 0 )
        X_THROW(( XSDK::ModuleId, XSDK::F_OS_ERROR, "Unable to shutdown socket."));
    

    1 回复  |  直到 14 年前
        1
  •  2
  •   dicroce    14 年前

    答案是几乎所有的系统调用都可以清除Win32的“LastError()”错误。。。在我的例子中,抛出一个异常意味着格式化和记录一条消息,这导致错误被清除。。。即使我在捕获时立即调用WSAGetLastError(),但已经太晚了。。。