You can use a function try block.
tftp_server::tftp_server(unsigned short port_number)
try
: _socket(_io_service, udp::endpoint(udp::v4(), port_number))
{
//...
}
catch(...)
{
}
But, to quote The Herb Sutter (GotW 66):
if the catch block does not throw (either rethrow the original
exception, or throw something new), and control reaches the end of the
catch block of a constructor or destructor, then the original
exception is automatically rethrown.
In other words (also Sutter)
the only (repeat only) possible use for a constructor
function-try-block is to translate an exception thrown from a base or
member subobject
In summary: you can do that, but there's usually no point.