Основное исключение при выдаче чего-либо, полученного из std::exception
, может быть, если вы используете какую-то инфраструктуру (например, MFC) с собственной иерархией исключений. В этом случае, как правило, вместо этого вы хотите получить производную от соответствующего места в их иерархии.
Обратите внимание, что я не особенно стараюсь держать MFC в качестве примера чистой обработки исключений (или чистого дизайна в целом), только пример структуры, которая включает иерархию исключений. Когда вы используете платформу, которая уже определяет иерархию исключений, вам, как правило, лучше ее использовать.
Другими словами, в отличие от предпочтения в C ++, в целом принято, что исключения должны представлять собой единую монолитную иерархию с одним корнем. Для стандартной библиотеки этот единственный корень - std::exception
, но у других платформ есть альтернативы, и если они предоставляют такую, вы обычно хотите в нее вписать свою.