Хотел бы спросить ваше мнение. Для меня не понятен один момент. Создал класс сервера, в котором выполняю listen и в случае ошибки делаю emit onError(serverError(), errorString()), в «главный» класс. Заметил, что если порт занят, то получаем errorString = The bound address is already in use (serverError = 8, QAbstractSocket::AddressInUseError), что не совсем информативно. Далее посмотрел что в QtNetwork/qabstractsocket.h описанных ошибок (enum SocketError) не так много. Правильно ли я понимаю, что каждый код ошибки может быть общим для нескольких ситуаций? (Понимаю что можно порыться по коду, но мне пока не легко это дается). То есть передавая коды ошибок «на вверх», есть вероятность, что мы не сможем точно определить ситуацию в которой она произошла? Я не говорю участок кода
, а именно ситуация, понятно что многие ошибки могут быть в разных участках, это логично.
Допустим вполне возможно, что конкретная ошибка QAbstractSocket::AddressInUseError свойственна только listen (хотя это можно проверить простым поиском по файлам исходников, ну и конечно же я допускаю, что важны знания, которых у меня может не быть, чтобы логично определить такие ситуации), но вот посмотрев ее код в qtcpserver.cpp, я не обнаружил присвоения этой ошибки, похоже это делается где-то «в глубине» d->socketEngine. То есть появляется вопрос, а если этот d->socketEngine выполняется не только в listen? Это всего лишь пример, и разговор не конкретно об этой ошибке.
Еще один фактор, который сбивает с толку, это то что описание ошибки, нужно получать в тот же момент (ошибки) используя errorString. Почему нет общей «базы» ошибок для QtNetwork, чтобы в любой момент по коду получить ее описание? Что, для одного кода ошибки, может быть разное описание, в зависимости от ситуации?
Надеюсь смог объяснить суть не понимания
.
То есть как я понимаю, лучше ввести свои собственные коды ошибок, и «на вверх» передавать именно их?