Я слышал совет, что вам следует избегать попытки ловить блоки, если это возможно, так как они дорогие.
Мой вопрос касается, в частности, платформы .NET: почему пробные блоки дороги?
Сводка ответов:
Ясно, что в этом вопросе есть два лагеря: те, которые говорят, что пробные блоки стоят дорого, и те, которые говорят, что, может быть, чуть-чуть.
Те, кто говорит, что блоки try стоят дорого, обычно отмечают «высокую стоимость» раскрутки стека вызовов. Лично я не убежден этим аргументом - особенно после прочтения о том, как хранятся обработчики исключений здесь .
Джон Скит сидит в лагере "возможно, чуть-чуть" и написал две статьи об исключениях и производительности, которые можно найти здесь .
Была одна статья, которая показалась мне чрезвычайно интересной: в ней говорилось о «других» последствиях производительности блоков try (не обязательно потребления памяти или процессора). Питер Ричи упоминает, что он обнаружил, что код внутри блоков try не оптимизирован, как это было бы иначе компилятором. Вы можете прочитать о его результатах здесь .
Наконец, есть запись в блоге о проблеме от человека, который внедрил исключения в CLR. Посмотрите на статью Криса Брамма здесь .