typedef std :: runtime_error MyError против класса MyError: public std :: runtime_error - PullRequest
3 голосов
/ 28 марта 2011

В настоящее время я реализую некоторые пользовательские исключения в проекте и не могу решить, печатать ли мои исключения или выводить новый класс для каждого исключения.Заинтересованы в потенциальных плюсах и минусах каждого и предпочтительнее ли один?

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

Преимущества создания собственного класса просты: вы можете отправить его в обработчик catch.

Если вы решите не реализовывать свой собственный класс, я все еще сомневаюсь, что вам нужен этот typedef: что выабстрагируясь от?Вы также можете использовать простую std::runtime_error.

. Также вас может заинтересовать статья Дэвида Абрахамса об обработке исключений и реализации вашего собственного класса исключений.

3 голосов
/ 28 марта 2011

Выведите новый класс - тогда вы сможете различить их. Если вы введете typedef, обработчик исключений не сможет узнать, какой typedef был использован в броске.

0 голосов
/ 28 марта 2011

Мне сложно понять ваш вопрос, но если вы создаете свои собственные исключения, я думаю, что я бы использовал производный класс на случай, если вы захотите изменить поведение позже.

...