Это ужасный способ обработки исключений.Если выдается исключение, это происходит из-за ошибки.Затем вам нужно либо обработать ошибку, решить возникшую проблему, либо позволить ей завершить программу.
Игнорирование исключение не имеет смысла.
По крайней мере, вы должны сбросить исключение, как только оно будет зарегистрировано.Измените макрос END_FUNCTION
, чтобы включить throw;
.Это также должно устранить ошибку компилятора, которую вы получаете.
Последнее замечание: ваши имена макросов выбраны неправильно.Имена, которые либо:
- содержат двойное подчеркивание, либо
- начинаются с подчеркивания, за которым следует заглавная буква
, зарезервированы для использования реализацией (компилятор и стандартная библиотека.
Вы рискуете конфликтовать, используя в своей программе такие имена, как везде .
Также следует учитывать, что перехват исключений должен выполняться по ссылке(catch (const std::exception& e)
, и что он не будет перехватывать исключения, не полученные из std::exception
. Если вы хотите отлавливать все, что выброшено, используйте catch(...)
.