Моя позиция - обработка исключений в том виде, в котором она применяется в мейнстриме, вредна. Нарушается структурность и формальные свойства блоков. Подобный прыжок (исключение) несёт в себе свойства goto, просто адреса возвратов хранятся в динамическом стёке. Исключения нужны в двух случаях: когда программа падает, чтобы успеть совершить перед смертью определённые действия, и когда экранируются атомарные операции, которые могут вызывать исключения и программист хочет их учитывать. К таким операциям относятся прежде всего арифметические, а также работа с сопроцессором. Для всего остального есть результат функции, есть OUT-параметры и иные способы сообщить об ошибке.