[C++ MVC] Obsługa wyjątków generowanych w Modelu
Ostatnio zmodyfikowano 2013-06-24 18:58
comstudio Temat założony przez niniejszego użytkownika |
[C++ MVC] Obsługa wyjątków generowanych w Modelu » 2013-06-23 17:42:36 Witam, zmagam się z problemem, jak wychwycić kilka wyjątków generowanych w Modelu, bo zgodnie z założeniem MVC użytkownik ma tylko jawny dostęp do Widoku, a Model jest już tylko zarządzany przez Kontroler, no i teraz mnie zastanawia jak to najlepiej rozwiązać, żeby nie naruszać idei MVC i wysypać tym wyjątkiem i ubić program. Chodzi dokładnie o ten fragment, jednakże napisanie tego w ten sposób nie jest zgodne z MVC. ClientNetwork::ClientNetwork( void ) { WSADATA wsaData; ClientSocket = INVALID_SOCKET; initMode = 1; struct addrinfo * result = NULL, * ptr = NULL, hints; try { (( initResult = WSAStartup( MAKEWORD( 2, 2 ), & wsaData ) ) > 0 ? throw initResult : false ); } catch( int e ) { cout << "Blad WSAStartup: " << e << endl; exit( 1 ); } ZeroMemory( & hints, sizeof( hints ) ); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; try { (( initResult = getaddrinfo( "127.0.0.1", DEFAULT_PORT, & hints, & result ) ) > 0 ? throw initResult : false ); } catch( int e ) { cout << "Blad Addrinfo: " << e << endl; WSACleanup(); exit( 1 ); } for( ptr = result; ptr != NULL; ptr = ptr->ai_next ) { try { (( ClientSocket = socket( ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol ) ) == INVALID_SOCKET ? throw INVALID_SOCKET : false ); } catch(...) { cout << "Blad Socket'a: " << WSAGetLastError() << endl; WSACleanup(); exit( 1 ); } try { (( initResult = connect( ClientSocket, ptr->ai_addr,( int ) ptr->ai_addrlen ) ) == SOCKET_ERROR ? throw initResult : false ); } catch(...) { closesocket( ClientSocket ); ClientSocket = INVALID_SOCKET; cout << "Serwer wylaczony!" << endl; } } freeaddrinfo( result ); if( ClientSocket == INVALID_SOCKET ) { cout << "Nie mozna polaczyć sie z serwerem!" << endl; WSACleanup(); exit( 1 ); } try { (( initResult = ioctlsocket( ClientSocket, FIONBIO, & initMode ) ) == SOCKET_ERROR ? throw initResult : false ); } catch(...) { cout << "Blad ioctlsocket: " << WSAGetLastError() << endl; closesocket( ClientSocket ); WSACleanup(); exit( 1 ); } }
|
|
DejaVu |
» 2013-06-24 18:58:36 catch( Wyjatek & wyjatek ) { wyjatek.dodajTrescWyjatku( "blabla" ); throw; }
|
|
« 1 » |