Tengo un problemilla al ahora de capturar una excepción y es al ejecutar la funcion .Listen() de dicho control.
La capturo sin problemas, lo que no me acaba de salir es conocer el nº del error. Por ejemplo, estoy provocando la excecpión intentando abrir un puerto que ya está en uso:
Código:
Según la definición de GetErrorMessage el ultimo parámetro (opcional) debe ser un puntero a unsigned int, y se almacenará en él el numero del error ocurrido.try { if (m_WinSock.GetState()!=0) m_WinSock.Close(); m_WinSock.SetLocalPort( portNumber ); m_WinSock.Listen(); } catch(CException *e) { char info[300]; unsigned int code; e->GetErrorMessage( info, 300, &code ); }
El problema es que luego haciendo un TRACE de code devuelve '0'. Como no se provocar excepciones diferentes no se si es correcto, pero según la msdn, WSAEADDRINUSE (10048) corresponde a un error de dirección en uso... así que supongo que algo hago mal.
Por lo demás, GetErrorMessage funciona bien ya que en info me guarda perfectamente el texto del error ("Dirección en uso").