Die `boost::system::error_code` value bereitgestellt werden sollten, wenn "boost::asio::ip::tcp::resolver::resolve ()" schlägt fehl?
Möchte ich zurückgeben boost::system::error_code
indicationg, ob ein host/service behoben werden konnte oder nicht. Es könnte mehrere Gründe, warum Sie einen host - /service-look-up-Fehler (z.B. Netzwerk-Probleme mit der Verbindung oder ein ungültiges argument).
Was muss zurückgegeben werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es unmöglich, dieses Recht zu bekommen, die von außerhalb
resolve()
. Aber Sie bekommen es zu tun es für Sie, mit einer der überladungen, nimmt eineerror_code&
als out-parameter:iterator resolve(const Abfrage & q, boost::system::error_code & EG)
iterator resolve(const endpoint_type & e, boost::system::error_code & EG)
und dann wieder der Fehlercode setzt es. Ich hoffe, dass dies wird wrap up
errno
oderh_errno
als angemessen.Müssen Sie sich mit Fehler code und Kategorie, um zu erstellen
error_code
Objekt. Hier ist ein Beispiel, unter der Annahme, dass der Fehler zurückzuführen ist auf einen anderen host weigert Verbindung:Können Sie auch pass
errno
Wert als Fehlercode bei der Verwendung von system-Kategorie. Zum Beispiel:Leider, diese Bibliothek ist schlecht dokumentiert, so kann ich dir empfehlen, zu schauen,header-Dateien, um Dinge herauszufinden. Der code ist Recht einfach und geradlinig und es.
Falls Ihr compiler unterstützt C++11, und Sie sind bereit, es zu benutzen, diese Funktionalität in den standard. Soweit ich weiß gcc-4.6.1 hat es schon. Hier ist ein einfaches Beispiel:
Allgemein, Bibliotheken pass
error_code
Objekt herum, wenn es gibt keine Notwendigkeit zu werfen und verwenden Siesystem_error
eine exception werfen, das system beschreibenden Fehler. Ein weiterer Grund für die Verwendungerror_code
ohne Ausnahmen ist, wenn Sie brauchen, um zu signalisieren, das Fehler in verschiedenen threads. Aber C++11 hat eine Lösung für die Propagierung von Ausnahmen auf mehrere threads.Hoffe, es hilft!