Re: Набор исключений метода
От: AlexGin Беларусь  
Дата: 14.06.18 20:25
Оценка: 4 (2)
Здравствуйте, developer, Вы писали:

D>Привет всем.


D>У меня такой вопрос — в проекте становится до фига исключительных ситуаций. Например, есть сложный метод, который уже кидает кучу разных исключений. Конечно есго можно разбить на несколько методов и упростить, но вопрос не в этом. Как организовать все эти исключения различных методов в проекте?


D>Более конкретно:

D>Стоит ли использовать исключения, которые не унаследованы от std::exception?
Не вижу особого смысла. Проще всё-таки наследовать от стандартных.

D>Стоит ли наследовать все исключения от какого-то одного класса, например, от std::runtime_error — чтобы иерархия исключений имела один единственный корень?

Да, вполне естественно — иметь один базовый класс исключений.
Вот подробнее:
https://isocpp.org/wiki/faq/exceptions
http://en.cppreference.com/w/cpp/error/exception
https://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling.htm
http://www.cplusplus.com/doc/tutorial/exceptions

D>Стоит ли как-то сгруппировать исключения в группы (т.е. для каждого метода своя группа исключений)?

Стоит ли усложнять?
Делай как можно проще: https://en.wikipedia.org/wiki/KISS_principle

D>Иногда бывает одинаково уместно или вернуть false или кинуть исключение — что предпочесть?

В стиле C++ всё таки — кинуть исключение; В стиле C — вернуть значание
Приимущество исключения — меньше вероятности, что проблема останется незамеченной.

P.S. Вот ещё полезная информация:
https://stackoverflow.com/questions/12261915/howto-throw-stdexceptions-with-variable-messages
https://stackoverflow.com/questions/3074646/how-to-catch-unknown-exception-and-print-it

Применение std::exception_ptr:
http://en.cppreference.com/w/cpp/error/exception_ptr
https://stackoverflow.com/questions/14232814/how-do-i-make-a-call-to-what-on-stdexception-ptr
https://msdn.microsoft.com/en-us/library/dd293602.aspx
Отредактировано 14.06.2018 22:08 AlexGin . Предыдущая версия . Еще …
Отредактировано 14.06.2018 22:07 AlexGin . Предыдущая версия .
Отредактировано 14.06.2018 21:33 AlexGin . Предыдущая версия .
Отредактировано 14.06.2018 21:02 AlexGin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.