Code:
int main (void)
{
try
{
server_socket ssck (80);
}
catch (int err)
{
if (err == ssck.errcreate)
{
std::cout << "Error at create()" << std::endl;
return -1;
}
}
std::cout << "Socket Creation Successful!" << std::endl;
return 0;
}
YUCK! GROSS! NO! WRONG! BAD! EVIL!
The purpose of an exception: TO BE INFORMATIVE!
Now, let's step back a bit from this design and consider a good approach by following the advice you've been given:
Code:
class socket_error:
public std::runtime_error
{
// ???
};
Code:
class socket_invalid_port:
public socket_error
{
// ???
};
Code:
class server_socket
{
// ???
server_socket(short int port):
fport(port)
{
// ???
if(!validate_port())
{
throw(socket_invalid_port(port));
}
}
// ???
}
Code:
int main()
{
try
{
server_socket ssck (80);
// if execution gets here
// we have a valid socket
// full stop
// don't check anything
// just use the socket
std::cout << "Socket Creation Successful!" << std::endl;
return(0);
}
catch(const socket_error & error)
{
std::cout << error.what() << std::endl;
return(-1);
}
}
Soma