Я использую коды ошибок для обработки ошибок в моем проекте на C++. Проблема заключается в том, как вернуть коды ошибок из функции, которая должна возвращать некоторую переменную/объект.Правильный подход для возврата кодов ошибок в C++
считают это:
long val = myobject.doSomething();
Здесь MyObject является объектом некоторого класса. Если функция doSomething встречает некоторое условие ошибки, то как она должна уведомить вызывающего абонента (без использования исключений).
Возможные решения:
- Есть элемент данных (скажем err_) в классе, который может быть проверен абонентом. Но это было бы небезопасно в многопоточном приложении, использующем один и тот же объект и вызывающем одну и ту же функцию.
- Используйте некоторую глобальную переменную ошибки, снова такую же проблему в многопоточной среде.
Теперь, как я могу уведомить вызывающего абонента о некотором состоянии ошибки?
Связанный: [Результат и ошибка кода C++ int foo (...)] (http://stackoverflow.com/questions/1882047/convention-result-and-code-error-c-int-foo) –
Вы, я только что обнаружил причину №1 для исключений, BTW. Но почему вы также отвергаете другое общее решение для сообщения об ошибках, которое заключается в возврате кода ошибки и использовании out-parameters для результатов функции? – MSalters
@MSalters Я не использую другой подход, о котором вы говорили, потому что часть кода уже выполнена, и это добавит к несогласованности в стиле – Jeet