У нас есть блок кода, который генерирует много исключений (по-видимому, IndexOutOfRangeException). Возможно, что он генерирует до 50 000/сек. Они пойманы, но процессор действительно всплескивает. Блок кода просто проверяет IDataRecord для столбца. Блок очень общий, и если столбец не существует, исключение поймано и возвращает логическое значение.Слишком много исключений .NET
Если бы не количество исключений, это не было проблемой. Единственный способ, который я могу исправить, это перебрать столбцы IDataRecord, чтобы увидеть, есть ли столбец перед обработкой, но это также похоже на дорогостоящий шаг, потому что это очень высокоприбыльное приложение, и вы бы перед тем, как обратиться к любому столбцу.
Я просто ищу некоторые мысли.
Исправить код. 'IndexOutOfRangeException' является одним из тех исключений, которые вы никогда не должны видеть! – leppie
Работа с исключениями - неправильный подход. Я бы рекомендовал сосредоточиться на том, почему эти исключения бросаются. Обработка исключений не является бесплатной, и при этом объем не является легким. Этот тип исключения почти всегда можно избежать. –
Во-первых, обычно в сотни раз дешевле исключить исключение, чем обрабатывать его. Во-вторых, доступ к несуществующему индексу - * ошибка *. Логика программы просто неверна. Не оставляйте обои поверх зияющего отверстия; закрепите отверстие. –