Обновление: я собираюсь оставить все как есть: снижение производительности исключения (очень редкое) лучше, чем, вероятно, снижение производительности при проверке каждой операции (общее)
Я пытаюсь поддержать «EstimatedRowCount», который в одном случае был бы продуктом двух вложенных курсоров, объединенных вместе:
estimatedRowCount = left.EstimatedRowCount * right.EstimatedRowCount;
return estimatedRowCount;
Конечно, если левая и правая части достаточно велики, это вызовет исключение OverflowException.
Здесь меня не волнует, точная ли оценочнаяRowCount на 100%, достаточно большая, чтобы знать, что этот курсор содержит много данных.
Прямо сейчас я делаю это:
// We multiply our rowcount
Int64 estimRowCount = 0;
try
{
estimRowCount = leftRowCount * rightRowCount;
}
catch (OverflowException)
{
// Ignore overflow exceptions
estimRowCount = Int64.MaxValue;
}
return estimRowCount;
Есть ли лучший способ протестировать операции переполнения, чтобы мне не нужно было делать попытку {} catch для защиты?