Russian Qt Forum

Qt => Общие вопросы => Тема начата: Alexandr Az от Сентябрь 19, 2007, 09:49



Название: Qt & try/catch
Отправлено: Alexandr Az от Сентябрь 19, 2007, 09:49
Пишу либу под куте и, понятное дело, хочется писать её в стиле qt.
Но не жалуют они исключения...

функция внутренняя
Код:
 bool someClass::userOperation()
                     {
                           unsetError();
                           if (!someOperation())
                           {
                                  bufferError.text = "Ошибка такая то";
                                  return false;
                           }
                     }
                     return true;
и со стороны юзера
Код:
if (!someClass.userOperation())
      qDebug() << someClass.errorString()
Приводит к такому захламлению кода, что ужас.
Не проще ли забить на все это дело и отдавать пользователю исключения, которые бы он сам обрабатывал?????

Было бы ничего, если бы это был один класс. Но этот класс использует кучу порождённых в нём объектов, и приходится в каждом хранить указатель на контейнер, чтобы он мог работать с общим буфером ошибок. Мне такая зависимость ни к чему, да и очищать буфер каждый раз, думать в каком месте записать сообщение об ошибке.....

Кто как выходит из данной ситуации?


Название: Re: Qt & try/catch
Отправлено: pastor от Сентябрь 19, 2007, 12:43
Пишу либу под куте и, понятное дело, хочется писать её в стиле qt.
Но не жалуют они исключения...

В Qt3 троли не юзают экзепшены, но в Qt 4 они есть. Просто Qt нужно скомпилить с их поддержкой.


Название: Re: Qt & try/catch
Отправлено: Alexandr Az от Сентябрь 19, 2007, 13:41
Угуг. Целых 3 штуки на всё куте. (поиск в исходниках)


Название: Re: Qt & try/catch
Отправлено: Dodge от Сентябрь 19, 2007, 15:00
программисты trolltech действительно не очень любят исключения, так что попробуйте посмотреть в сторону qFatal() итд...


Название: Re: Qt & try/catch
Отправлено: Racheengel от Сентябрь 19, 2007, 16:16
Их не только программисты trolltech не любят...
Мы их тоже редко применяем.
Просто где-то они нужны, а где-то лучше без них.


Название: Re: Qt & try/catch
Отправлено: fightcat от Сентябрь 21, 2007, 15:00
Если сильно извратиться, наверное, можно сделать что-то свое на основе QSignalSpy, а вместо бросания исключений, эмиттировать сигналы...