#c #exception #network-programming
Вопрос:
В настоящее время я пытаюсь реализовать класс TCP-сервера на C , который использует функции C для получения некоторых его ресурсов и предоставления функциональности класса в целом. Я следую Руководству Beej По Сетевому Программированию (http://www.beej.us/guide/bgnet/html/), который рекомендуется в нескольких сообщениях о сетевом программировании.
Однако руководство написано на языке Си, и я хотел придать всему более объектно-ориентированный дизайн, и после того, как я попробовал разные вещи, мне пришла в голову идея упаковать базовую процедуру TCP-сервера (create socket()
, bind()
, listen()
, accept()
) в тело конструктора моего класса.
Таким образом, когда объект TCP-сервера (с переданным ему номером порта) будет создан, он будет готов установить соединение с клиентом.
Тем не менее, функции, упомянутые выше, могут не работать, т. Е. Необходимо учитывать обработку исключений, и я не знаю, является ли обработка исключений в теле конструктора плохой практикой (я не знаю о возможных последствиях).
Поэтому мой вопрос в том, хорошо ли обрабатывать исключения в теле конструктора или нет.
Заранее спасибо!
Комментарии:
1. Если вы можете справиться с плохими состояниями, конструктор, на мой взгляд, такое же хорошее место, как и любое другое. Создание исключения в конструкторе означает, что вы не можете создать экземпляр недопустимого объекта. В зависимости от контекста проекта, выбрасывание исключений может быть вообще запрещено, но если это не так, меня бы это устроило, так как пользователь теперь вынужден так или иначе справляться с плохим состоянием. Так что, бросать исключения в конструкторах было бы неплохо, если бы это был я, но это скорее личное мнение, чем лучшая практика. Ничего не могу сказать по этому поводу.
2. Большое спасибо! Это многое проясняет 🙂