Скажу так: мне повезло, что в моём продукте исключений нет и мой непосредственный коллега разделяет моё отношение к ним.
Мой менее непосредственный коллега во флагманском продукте юзает исключения. Он хорошный программист, грамотный и дотошный, но непогрешимых нет. Поэтому я периодически запускаю WinDBG, когда юзер присылает минидамп крэша, и тыкаю коллегу носом в тот throw, для которого он опять забыл catch.
А вот если catch не забыли, но сработал не тот, который должен, это дебажить гораздо сложнее.
Слава Богу что на такое "забыл catch" создаётся дамп. Ведь если не юзать исключения и забыть обработать код ошибки (аналог "забыть catch"), то можно не получить никакого падения вообще. Более того можно пойти весело дальше работать с сломанными инвариантами и повредить данные клиентов или упасть хз где хз по какой причине