|
void Accepter::run() { |
|
while (true) { |
|
try { |
|
Socket newsocket = server.accept(); |
|
Clienthandler* handler = |
|
new Clienthandler(rootfile, std::move(newsocket), references); |
|
clientlist.push_back(handler); |
|
handler->start(); |
|
this->removeDeadClients(); |
|
} catch (SocketClosedException& e) { |
|
break; |
|
} |
|
} |
|
} |
Como mencioné anteriormente, la STL puede lanzarte excepciones. Este catch solamente está protegiendo la excepción que creaste vos en la clase Socket. Como dije en las correcciones anteriores, cada función principal de cada hilo de ejecución, debería tener un bloque try catch de std::exception y de las elipsis. EN este caso particular, vos querés, y está bien eso, también tener un catch especifico de SocketClosedException para no imprimir el mensaje de error, porque es algo esperable.
try {
while (true) {
Socket newsocket = server.accept();
Clienthandler* handler =
new Clienthandler(rootfile, std::move(newsocket), references);
clientlist.push_back(handler);
handler->start();
this->removeDeadClients();
}
} catch (SocketClosedException& e) {
break;
} catch (std::exception &e) {
std::cerr << e.what() << std::endl;
} catch (...) {
std::cerr << "error desconocido en el hilo aceptador" << std::endl;
}
TP3-9508/server_src/accepter.cpp
Lines 29 to 42 in 34f95ac
Como mencioné anteriormente, la STL puede lanzarte excepciones. Este catch solamente está protegiendo la excepción que creaste vos en la clase Socket. Como dije en las correcciones anteriores, cada función principal de cada hilo de ejecución, debería tener un bloque try catch de
std::exceptiony de las elipsis. EN este caso particular, vos querés, y está bien eso, también tener un catch especifico deSocketClosedExceptionpara no imprimir el mensaje de error, porque es algo esperable.