Более дополнение к ответам, данным до сих пор, чем отдельный, собственный:
На самом деле, вы могли бы основывать обработку исключений на оценке строки what()
:
catch(std::exception const& e)
{
if(strcmp(e.what(), "some text"))
{
doThis();
}
else if(strstr(e.what(), "something"))
{
doThat();
}
// ...
}
Однако для этого необходимо знать точное содержимое строки.Что, если они различаются в разных реализациях C ++?Что, если они локализованы в некоторых системах?Вы действительно хотите справиться со всеми такими вопросами?Кроме того, обработка текста намного дороже, чем просто перехват различных исключений.
Таким образом, с различными исключениями вы получаете мобильность, безопасность (рассмотрите опечатки в строках, с которыми вы сравниваете ...), более простой и лучший читаемый код и, в качестве бонуса, эффективность.