Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2013, 12:20   #1
TRIZER
Студент
Пользователь
 
Аватар для TRIZER
 
Регистрация: 13.11.2009
Сообщений: 65
По умолчанию Обработка ошибок C++

Добрый день.
Пишу программу. Необходимо сделать адекватную обработку ошибок.
Пишу на Qt.
Хочу узнать, насколько правильна моя реализация и как поступили бы вы.
Несколько классов генерируют сигналы-сообщения об ошибках и уведомления. Класс-одиночка обработчик сообщений все эти сообщения ловит и записывает в лог (события имеют приоритет Ошибка/Предупреждение/Уведомление). И кроме того обработчик сообщений отправляет сообщения в главное окно или в консоль (в зависимости от текущих настроек и типа сообщения).

Код:
class AppMessage
{
    friend class MessageProcessor;
public:
    AppMessage(int id, MessagePriority messagePriority, MessageType messageType, QString text);
    enum MessagePriority {Info, Warning, Error};
    enum MessageType {Window = 0x01, noWindow = 0x00, Console = 0x02, noConsole = 0x00};
    int getID() {return id;}
    QString & getText() {return text;}
    MessagePriority getMessagePriority() {return messagePriority;}
    MessageType getMessageType() {return messageType;}
    QString toString();

private:
    int id;
    MessagePriority messagePriority;
    MessageType messageType;
    QString text;
};
Все классы я поделил на несколько блоков (логических), в которых генерируются синхронные исключения (throw) и там же перехватываются, затем генерируются сигналы. типа:
Код:
    try
    {
        serialPort->setPort(settings->value("port/portName","").toString());
    }
    catch (Error e)
    {
        error(e);
    }
Возможно в Qt уже есть подобное (я не нашел) и я изобретаю колесо. Или идея в корне неправильная. Кроме того. забыл упомянуть, устройство которым управляет моя программа тоже генерирует ошибки, о которых нужно информировать оператора.
TRIZER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка ошибок mikebrownen Общие вопросы C/C++ 1 21.10.2011 09:51
Обработка ошибок kardinal94 Общие вопросы Delphi 2 21.11.2010 20:23
Обработка ошибок Liones БД в Delphi 12 04.12.2008 07:22
Обработка ошибок Ivanich JavaScript, Ajax 1 24.04.2008 22:49
Обработка ошибок. Serviceprofi Помощь студентам 7 19.11.2007 15:12