2015-03-29 2 views
1

Итак, у меня есть простой библиотечный класс, и этот класс имеет некоторые методы, которые возвращают некоторые значения, такие как ошибки кода.Ошибки обработки C++

User_program

MyClass go(arg1, arg2) 
if(go.execute() == 0) 
    std::cout << go.result(); 

И мой класс имеет что-то вроде этого

Мой класс

int execute() 
{ 

    if((temp = doBar()) != 0) 
    { 
     return temp; 
    } 
    return SUCCESS; 
} 

int doBar() 
{ 
    if(foo == 1) 
     return DIVIDION_BY_ZERO; 
    if(fzz == 0) 
     return OPERATION_ERROR; 
} 

И так далее. Итак, есть ли способ сделать ошибки более полезными, я слышал об enum с const для ошибок, но я не понимаю, как его реализовать.

Спасибо.

+0

Есть много вопросов об этом. Вы читали их? –

+0

Ну, я читал про пробку, но я не думаю, что это хорошая идея. Я попытался сделать google что-то вроде «enum errors C++», но я не нашел ничего полезного. Я просмотрел источники проекта на github и заметил эту функцию - используя перечисления в этом случае, но я не помню, где я ее нашел. – Ascelhem

+0

есть сайты, посвященные таким вещам .. [cppreference] (http://en.cppreference.com/w/cpp/language/exceptions), [isocpp] (https://isocpp.org/images/uploads/2 -TOUR-Basics.pdf). Постскриптум ничто не является хорошей идеей, если вы не знаете, чего вы пытаетесь достичь. –

ответ

2

Не уверен, что я правильно понял вопрос, но вот несколько моментов.

  1. В вашем случае enum`s это способ хранить все определения константных значений типа (УСПЕХА, DIVIDION_BY_ZERO и т.д.) в одном месте (даже в блоке один перевод). А также компиляционная проверка типов. читайте здесь: [1]
  2. 2) Если, как реализованы интересное некоторые проверки ошибок нет необходимости далеко ходить.

    • Прежде всего смотреть на ошибки обработки C в LIBC [2]
    • В ISO C++ 11, представленный [system_error]
    • и типичные обработки в LIBS ошибке выпустили специально для (почти) каждого типа, как в Qt [QNetworkReply]
  3. А также использование исключений (и темной стороны C++, таких как RTTI) в libs - плохая идея. Но перейдите по этой ссылке [3]

Смежные вопросы